Python 3.3很多激动人心的新特性啊
Posted | archive
最近粗浅把玩了一下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