我有一个需要多处理的程序。它调用的函数将自动使用每个可用的内核。但是,这在某种程度上会引起问题,因为每个内核都用于每个进程,这意味着每个内核都有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个内核,但是该功能不是我的,而是我调用的应用程序,并且我不知道在源代码中将其限制在哪里。
有什么建议吗?
非常感谢
我找到了答案here