1

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

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

4

1 回答 1

2
  • 您需要创建一个可以跨不同网络工作的分布式队列。像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。

Celery 中有很多功能可以根据您的要求使用 - 监控/调度作业/Celery 画布等等。

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

于 2020-11-05T03:41:50.803 回答