Python的直观并发 http://vanillapy.readthedocs.org/
项目描述
如果Go和ZeroMQ有一个孩子,这个孩子长大后开始与PyPy约会,然后他们有一个孩子,这可能就是Vanilla的样子。
概述
Vanilla允许您在Python中构建并发软件。Vanilla程序围绕独立的协程(greenlets)构建,通过管道相互通信。管道类似于Go编程中的通道。
没有回调疯狂和猴子补丁。Vanilla力求尽可能明确和直观。
文档
它看起来是这样的
启动协程
h = vanilla.Hub()
def beat(message):
while True:
print(message)
h.sleep(1000)
h.spawn(beat, 'Tick')
h.spawn_later(500, beat, 'Tock')
# Tick / Tock / Tick / Tock
协程通过管道通信
h = vanilla.Hub()
sender, recver = h.pipe()
h.spawn(sender.send, 'Hello World')
recver.recv()
# 'Hello World'
管道功能;受反应式函数模式的启发,管道可以串联
h = vanilla.Hub()
p = h.pipe().map(lambda x: x*2)
h.spawn(p.send, 4)
p.recv()
# 8
在Vanilla中,一切都是管道。这是TCP的样子
h = vanilla.Hub()
server = h.tcp.listen(port=9000)
# server is a Recver which dispenses new TCP connections
conn = server.recv()
# conn is a Pipe you can recv and send on
message = conn.recv()
conn.send("Echo: " + message)
安装
Vanilla与Python 2.6 - 2.9和PyPy兼容。
pip install vanilla