1

尽管有很多关于多处理的信息,但我无法找出解决问题的正确方法:

我有一个计算一些数据的函数 - 每次大约需要 5 秒。我需要运行这个函数 2 到 100 次。该函数可以独立运行,因此如果一个调用需要 20 秒而另一个只需要 3 秒,那么这对最终结果并不重要。这种情况非常适合多处理设置。但是为 100 个函数调用并行启动 100 个进程对我来说没有意义。

我要查找的关键字是什么?队列、池、管理器?我想每次都计算 x 个案例,具体取决于系统拥有的核心数量。一旦其中一个计算完成并且 CPU 有一个空闲内核,它应该从列表中删除下一个案例并再次触发晶体管。完成所有操作后,我想访问输出。

提前致谢!

4

1 回答 1

0

您可以使用多处理库。或者,如果您想移出标准库并获得更多功能,请参阅celery

另外,请阅读这篇文章,因为它讨论了线程和进程之间的一些差异。具体来说,线程是一种性能黑客,除非你真的需要这种提升,否则让内核处理 IPC 和共享时间的细节会更容易。

于 2013-05-01T12:33:15.453 回答