Python 有没有像 Erlang 那样具有并发性的东西,特别是网络上的透明参与者?我看过诸如greenlet和stackless之类的东西,但它们似乎没有演员的网络透明性。
我仍然不能完全跳过 Erlang/OTP 的障碍,所以我很感兴趣是否有离家更近的东西。
并不真地。Erlang 的设计初衷就是支持演员,而 Python 不是。我能想到的最符合要求的是Candygram库,但即使这样也不完全正确。
试试 Axon / Kamaelia
它与 PyPy 兼容,因此您可以通过 PyPy 的 JIT 获得基于 actor/flow 的编程和显着加快的执行速度。
caine是我创建并以这个人命名的包,它实现caine.SupportingActor
了一个用户友好的 python 并发角色模型。
默认情况下,caine.SupportingActor
类具有以下属性/功能:
inbox
:托管队列。消息像这样传递给演员,foo.inbox.put('bar')
.timeout
:超时前消息接收之间允许的秒数。receive
:使用收件箱中的消息执行的功能,需要实现。handle
:引发异常时执行的函数。callback
: 处理完成时执行的函数。cut
: 调用时结束处理。此外,caine.SupportingCast
该类继承了所有功能,caine.SupportingActor
同时允许指定数量的参与者处理来自同一收件箱的消息而不会重复。
这并不是真正的并发,但Celery可能会为您提供一些您正在寻找的东西,在网络上分配任务负载方面。
见皮卡。我不确定它如何处理错误。
对于其中一些功能,请参阅 stackless python。