13

Python 有没有像 Erlang 那样具有并发性的东西,特别是网络上的透明参与者?我看过诸如greenletstackless之类的东西,但它们似乎没有演员的网络透明性。

我仍然不能完全跳过 Erlang/OTP 的障碍,所以我很感兴趣是否有离家更近的东西。

4

7 回答 7

7

与其试图让 Python 更像 Erlang,不如让 Erlang 更像 Python 怎么样?

EfeneElixir是生成 BEAM 文件的语言编译器,这些文件可以利用 Erlang BEAM 仿真器的所有功能,包括网络透明的消息传递。

Efene 有一个“ifene”变体,它定义了带有空格的块,如 Python。否则,它与 JavaScript 最相似。

Elixir 语法最接近 Ruby。

这两种语言都比 Erlang 更接近 Python。

于 2011-04-01T23:54:15.213 回答
3

并不真地。Erlang 的设计初衷就是支持演员,而 Python 不是。我能想到的最符合要求的是Candygram库,但即使这样也不完全正确。

于 2011-04-01T22:33:37.857 回答
2

试试 Axon / Kamaelia

它与 PyPy 兼容,因此您可以通过 PyPy 的 JIT 获得基于 actor/flow 的编程和显着加快的执行速度。

于 2011-09-06T00:52:49.250 回答
1

caine是我创建并以这个人命名的包,它实现caine.SupportingActor了一个用户友好的 python 并发角色模型。

默认情况下,caine.SupportingActor类具有以下属性/功能:

  • inbox:托管队列。消息像这样传递给演员,foo.inbox.put('bar').
  • timeout:超时前消息接收之间允许的秒数。
  • receive:使用收件箱中的消息执行的功能,需要实现。
  • handle:引发异常时执行的函数。
  • callback: 处理完成时执行的函数。
  • cut: 调用时结束处理。

此外,caine.SupportingCast该类继承了所有功能,caine.SupportingActor同时允许指定数量的参与者处理来自同一收件箱的消息而不会重复。

于 2014-08-24T23:25:23.833 回答
0

这并不是真正的并发,但Celery可能会为您提供一些您正在寻找的东西,在网络上分配任务负载方面。

于 2011-09-06T01:10:33.493 回答
0

皮卡。我不确定它如何处理错误。

于 2012-12-21T02:33:44.007 回答
-1

对于其中一些功能,请参阅 stackless python。

于 2011-04-02T02:39:20.403 回答