我在 Ubuntu 12.04 上的 Python 中使用 multiprocessing.Pool,我遇到了一个奇怪的问题;当我调用map_async
我的 Pool 时,我生成了 8 个进程,但它们都在争夺对我的 8 核机器的单个核心的控制权。完全相同的代码用尽了我在 Macbook Pro 中的两个内核,以及我的其他 Ubuntu 12.04 桌面的所有四个内核(htop
在所有情况下都用 来衡量)。
我的代码太长,无法全部发布,但重要的部分是:
P = multiprocessing.Pool()
results = P.map_async( unwrap_self_calc_timepoint, zip([self]*self.xLen,xrange(self.xLen)) ).get(99999999999)
P.close()
P.join()
ipdb.set_trace()
根据本文的建议,哪里unwrap_self_calc_timepoint
是一个包装函数,用于将必要的参数传递给一个类。self
所有三台计算机都使用 Python 2.7.3,我真的不知道从哪里开始寻找为什么那台 Ubuntu 计算机出现故障。关于如何开始缩小问题范围的任何帮助都会有所帮助。谢谢!