Ответ 1
Не совсем. Эрланг был разработан с нуля для поддержки актеров, Python не был. Самое близкое, что я думаю о том, что соответствует законопроекту, это библиотека Candygram, но даже это не совсем правильно.
Есть ли что-нибудь для Python с concurrency, например, с Erlang, особенно прозрачными участниками сетей? Я посмотрел на такие вещи, как greenlet и stackless, но у них нет прозрачности сети для участников.
Я все еще не могу преодолеть барьер Erlang/OTP, поэтому мне интересно, если что-то ближе к дому.
Не совсем. Эрланг был разработан с нуля для поддержки актеров, Python не был. Самое близкое, что я думаю о том, что соответствует законопроекту, это библиотека Candygram, но даже это не совсем правильно.
Вместо того чтобы пытаться сделать Python более похожим на Erlang, как сделать Erlang более похожим на Python?
Efene и Elixir - это язык компиляторы, которые производят BEAM файлы, которые могут использовать все возможности эмулятора Erlang BEAM, включая сетевое прозрачное сообщение.
Efene имеет вариант ifene, который определяет блоки с пробелами, например Python. В противном случае он больше похож на JavaScript.
Синтаксис Elixir ближе всего к Ruby.
Оба языка ближе к Python, чем к Erlang.
Попробуйте Axon/Kamaelia
Он совместим с PyPy, поэтому вы получаете программирование на основе актера/потока и значительно ускоряете скорость выполнения с помощью PyPy JIT.
caine, пакет, который я создал и назвал после этого парня, реализует caine.SupportingActor
, удобную для пользователя модель актера для python.
По умолчанию класс caine.SupportingActor
имеет следующие атрибуты/функции:
inbox
: управляемая очередь. Сообщения передаются актеру так, foo.inbox.put('bar')
.timeout
: разрешенное количество секунд между приемами сообщений до истечения времени ожидания.receive
: функция, выполняемая с использованием сообщений из папки "Входящие", требует выполнения.handle
: функция, выполняемая при возникновении исключения.callback
: функция, выполняемая при завершении обработки.cut
: завершает обработку при вызове.Кроме того, класс caine.SupportingCast
наследует все функции caine.SupportingActor
, позволяя указанному количеству участников каждого сообщения процесса из одного и того же почтового ящика без дублирования.
Это не действительно concurrency, но Celery может дать вам что-то, что вам нужно, с точки зрения распределения нагрузки на нагрузку сеть.
См. Pykka. Я не уверен, как он обрабатывает ошибки.
Также для некоторых из этих функций см. пикс-код без стекол.