Python 3.3很多激动人心的新特性啊

最近粗浅把玩了一下libev,感受颇深

首先是瞻仰了libuv python binding - pyuv 作者 @saghul 的博客

特别是这个slides很是学习了点东西

里边还提到,Twisted, Tornade和Gevent都有其对应libuv实现了。猛啊。

其中一个重要的东西,就是 Python 3.3里边的PEP-3156,和其参考实现Tulip,基于Pyuv的也有个实现叫Rose

可以大胆估计,PEP 3156是以后最重要的Python标准接口之一了。其重要性超过PEP 333 WSGI

libuv和 Boost.ASIO的比较看这里

                         libuv          Boost
Event Loop:              yes            Asio
Threadpool:              yes            Asio + Threads
Threading:              
  Threads:               yes            Threads
  Synchronization:       yes            Threads
File System Operations:
  Synchronous:           yes            FileSystem
  Asynchronous:          yes            Asio + Filesystem
Timers:                  yes            Asio
Scatter/Gather I/O[1]:    no             Asio
Networking:
  ICMP:                  no             Asio
  DNS Resolution:        async-only     Asio
  SSL:                   no             Asio
  TCP:                   async-only     Asio
  UDP:                   async-only     Asio
Signal:
  Handling:              yes            Asio
  Sending:               yes            no
IPC:
  UNIX Domain Sockets:   yes            Asio
  Windows Named Pipe:    yes            Asio
Process Management:
  Detaching:             yes            Process[2]
  I/O Pipe:              yes            Process[2]
  Spawning:              yes            Process[2]
System Queries:
  CPU:                   yes            no
  Network Interface:     yes            no
TTY:                     yes            no
Shared Library Loading:  yes            Extension[3]

Python 3.3还支持socket.sendmsg() 和 socket.recvmsg() ,这是两个碉堡了的Vector IO (Scatter/Gather I/O) 函数。POSIX里边writev() 和 readv() 这两个 都是基于他们实现。sendmsg() 还有个非常诡异的功能

On some systems, sendmsg() and recvmsg() can be used to pass file descriptors between processes over an AF_UNIX socket

这个其实可以用来轻松实现跨进程 IPC 机制。系统原生支持。

是不是 mpi4py 可以去死了呢?

python 3.3还支持 concurrent.futures ,自带virtualenv,yield.from,dict共享内存,支持lzma/xz等等好玩的特性。

其中Unicode改进:

ASCII字符占用1个字节,BMP范围(也就包括了CJK文字)占用2字节,其他Unicode占用4字节。。碉堡了!

作为一个Python 2.7忠实用户,有点动心了!

Comments