对于像Erlang那样具有并发性的Python有什么特别的,特别是网络上的透明演员吗?我查看了greenlet和stackless之类的内容,但它们似乎没有网络透明度。
我仍然不能完全跳过Erlang / OTP的障碍所以我很感兴趣,如果离家更近的话。
答案 0 :(得分:7)
而不是试图使Python更像Erlang,如何让Erlang更像Python?
Efene和Elixir是生成BEAM文件的语言编译器,可以利用Erlang BEAM仿真器的所有功能,包括网络透明消息传递。
Efene有一个“ifene”变体,用于定义具有空格的块,如Python。否则,它与JavaScript最相似。
Elixir语法最接近Ruby。
两种语言都比Python更接近Python。
答案 1 :(得分:3)
不是真的。 Erlang是从头开始设计的,以支持演员,而Python则不是。我能想到的最接近法案的是Candygram库,但即使这样也不太合适。
答案 2 :(得分:2)
尝试Axon / Kamaelia
它与PyPy兼容,因此您可以使用PyPy的JIT获得基于actor / flow的编程并显着加快执行速度。
答案 3 :(得分:1)
caine,我创建并以this guy命名的包实现了caine.SupportingActor
,这是一个用户友好的python并发actor模型。
默认情况下,caine.SupportingActor
类具有以下属性/函数:
inbox
:托管队列。消息传递给actor,如foo.inbox.put('bar')
。timeout
:超时之前允许的消息接收秒数。receive
:使用收件箱中的邮件执行的函数,需要实现。handle
:引发异常时执行的函数。callback
:处理完成时执行的函数。cut
:调用时结束处理。此外,caine.SupportingCast
类继承了caine.SupportingActor
的所有功能,同时允许指定数量的actor每个处理来自同一收件箱的邮件而不重复。
答案 4 :(得分:0)
这不是真正的并发性,但Celery可能会在网络上分配任务负载方面为您提供所需的内容。
答案 5 :(得分:0)
见Pykka。我不确定它是如何处理错误的。
答案 6 :(得分:-1)
对于其中一些功能,请参阅stackless python。