我正在Ubuntu 12.04上使用Python中的multiprocessing.Pool,并且遇到了一个奇怪的问题。当我在我的Pool上调用
我的代码太长了,无法全部贴出,但重要部分是:
map_async
时,我会生成8个进程,但它们都在争夺我8核机器上的单个核心。完全相同的代码在我的Macbook Pro上使用两个内核,在另一台Ubuntu 12.04桌面上使用4个内核(如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 电脑出现问题。任何有关如何开始缩小问题范围的帮助都将是有益的。谢谢!