gpt4 book ai didi

python - multiprocessing.Pool 进程锁定到单个核心

转载 作者:行者123 更新时间:2023-11-28 18:51:22 24 4
gpt4 key购买 nike

我在 Ubuntu 12.04 的 Python 中使用 multiprocessing.Pool,我遇到了一个奇怪的问题;当我在我的 Pool 上调用 map_async 时,我生成了 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 是一个包装函数,用于根据 this article 的建议将必要的 self 参数传递给一个类.

所有三台计算机都使用 Python 2.7.3,我真的不知道从哪里开始寻找为什么一台 Ubuntu 计算机出现问题。关于如何开始缩小问题范围的任何帮助都会有所帮助。谢谢!

最佳答案

我有同样的问题,在我的例子中,解决方案是告诉 linux 在整个处理器上工作,而不是只在一个处理器上工作:尝试在代码的开头添加以下两行:


导入操作系统
os.system("taskset -p 0xfffff %d"% os.getpid())

关于python - multiprocessing.Pool 进程锁定到单个核心,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12592018/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com