Python中的multiprocessing.manager的替代方案

时间:2012-12-21 19:57:18

标签: python multiprocessing

由于某些要求,我一直在管理一个使用multiprocessing.manager的程序,但是我们已经收到了大量错误,例如超时,无效引用和其他类似错误。

现在我很好奇是否有一个更加发达的multiprocessing.manager替代方案,它在客户端具有更好的整体可靠性和更少的状态跟踪。

我已经尝试了谷歌这个主题,但由于关键字的奇怪组合,我只会收到虚假的结果。

我们通常的用例类似于:

def connect():
  manager = CustomManager(address=manager_address, authkey=manager_authkey)
  manager.connect()
  session = manager.session()
  return session

connect().some_function()

1 个答案:

答案 0 :(得分:2)

根据问题和您的意见判断,如果您想要更加可靠的东西来管理流程,那么使用多处理模块有更好的选择。以下是您可能想要探索的两个选项:

<强>的Gearman

这是对Gearman项目的描述。

  

Gearman提供了一个通用的应用程序框架来将工作分配到   其他更适合做这项工作的机器或工艺

Instagram的工作人员用python编写,并使用Gearman在后台运行这些工作。您可以在此What Powers Instagram帖子的任务队列部分阅读相关内容。

Celery:分布式任务队列

Celery是一个基于分布式消息传递的异步任务队列,它专注于实时操作。它在Django社区非常受欢迎。

这两种解决方案都具有很高的可扩展性,并且广泛使用,因此您可以找到大量有关如何使用它们的文档和教程。他们更多参与,因此将有更多的初始学习曲线。但是,如果你达到多处理的极限,我认为值得投入时间。