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