Python 代码在不同网络的不同机器上的并行化

Parallelization of Python code on different machines on different networks

我希望在不同网络上的两台计算机上使用并行化代码来执行一批任务,但我不确定如何在 Python 中执行此操作。

假设我在两个不同的网络上有两台计算机,计算机 A 和计算机 B,我有一批 100 个任务要完成。天真地,我可以给计算机 A 和计算机 B 分配 50 个任务,但如果计算机 A 在计算机 B 之前完成任务,我希望计算机 A 承担计算机 B 的一些剩余任务。两台计算机都应该 return 将它们的任务结果发送到我的本地计算机。如何做到这一点?

  • 您需要创建一个可以跨不同网络工作的分布式队列。类似于 rabbit-mq
  • 将您所有的任务放入队列中。
  • 创建一个中央工作人员管理工具,让您可以在计算机 A 和计算机 B 上创建和管理工作人员。工作人员将处理您的任务。
  • 您还需要注意工人的可用性以实现您所说的 - if Computer A finishes its tasks before Computer B, I would like Computer A to take on some of Computer B’s remaining tasks

幸运的是,python 有一个优秀的库“Celery”,它可以让您准确地实现您想要的。它是一个文档齐全的库,拥有庞大而多样化的用户和贡献者社区。 您只需要设置代理(或队列)并配置芹菜。

您可以根据需要使用 Celery 中的许多功能 - Monitoring/Scheduling jobs/Celery canvas 仅举几例。

https://docs.celeryproject.org/en/stable/getting-started/introduction.html https://medium.com/swlh/python-developers-celery-is-a-must-learn-technology-heres-how-to-get-started-578f5d63fab3