【发布时间】:2020-07-21 00:25:41
【问题描述】:
我有一个需要多处理的程序。它调用的函数将自动使用每个可用的内核。然而,这会导致一个问题,因为每个核心都用于每个进程,这意味着每个核心都有 100*x % 负载,其中 x 是生成的进程数。因此,对于 6 个进程,每个疮的使用率为 600%。
代码很简单,使用通常的方式:
pool = Pool(processes=6)
for i in pool.imap_unordered(main_program, range(100)):
print('Task in pool has finished')
然而,这将使每个核心都处于 600% 的负载,并且比单独执行每个进程要慢。 我假设我使用的 mp 模块错误,但我似乎无法弄清楚在哪里。
注意:我理想的解决方案是将主函数限制为仅使用 1 个内核,但该函数不是我的,而是我调用的应用程序,我不知道在源代码中的何处进行限制。
有什么建议吗?
非常感谢
【问题讨论】:
标签: python process multiprocessing python-multiprocessing pool