Erlangのように並行性を持つPython、特にネットワーク上の透過的なアクターには何かありますか?グリーンレットやスタックレスなどを見てきましたが、アクターにとってネットワークの透明性がないようです。
私はまだErlang/OTPのハードルを完全に乗り越えることができないので、家の近くに何かがあるかどうか興味があります。
Python をより Erlang に近づけようとする代わりに、Erlang をより Python に近づけてみませんか?
EfeneとElixirは、ネットワーク透過メッセージングを含む Erlang BEAM エミュレーターのすべての機能を利用できる BEAM ファイルを生成する言語コンパイラーです。
Efene には、Python のように空白を含むブロックを定義する "ifene" バリアントがあります。それ以外は、JavaScript に最も似ています。
Elixir の構文は Ruby に最も近いものです。
どちらの言語も、Erlang よりも Python に近いです。
あまり。Erlang はアクターをサポートするためにゼロから設計されましたが、Python はそうではありませんでした。法案に適合すると私が考えることができる最も近いのはCandygramライブラリですが、それでも完全ではありません.
Axon/Kamaeliaをお試しください
PyPyと互換性があるため、PyPyのJITを使用して、アクター/フローベースのプログラミングと大幅に高速化された実行速度を得ることができます。
私が作成し、この男にちなんで名前を付けたパッケージであるcainecaine.SupportingActor
は、 python のユーザーフレンドリーな同時実行アクター モデルである を実装しています。
デフォルトでは、caine.SupportingActor
クラスには次の属性/関数があります。
inbox
: 管理されたキュー。メッセージは次のようにアクターに渡されfoo.inbox.put('bar')
ます。timeout
: メッセージ受信からタイムアウトまでの許容秒数。receive
: 受信トレイからのメッセージを使用して実行する関数は、実装が必要です。handle
: 例外が発生したときに実行する関数。callback
: 処理が完了したときに実行する関数。cut
: 呼び出されると処理を終了します。さらに、このcaine.SupportingCast
クラスは のすべての機能を継承しcaine.SupportingActor
、指定された数のアクターが同じ受信トレイからのメッセージを重複なく処理できるようにします。
これは実際には同時実行性ではありませんが、Celeryは、ネットワーク上でタスクの負荷を分散するという点で、あなたが探しているものの何かを提供する可能性があります。
ピッカを参照してください。エラーを処理する方法がわかりません。
また、これらの機能の一部については、stackless python を参照してください。