如何在Python中将不同的进程固定到各个cpu核心

时间:2017-04-21 08:52:21

标签: python-3.x parallel-processing

我正在编写一个Python程序,它将从文本文件中加载一个wordlist,然后尝试用每个单词解压缩一个存档。如果它没有使用所有的cpu核心,那就不会很严重了。由于GIL,如果我没弄错的话,Python中的线程不是一个很好的选择。

所以我想得到cpu_cores的数量,拆分wordlist并使用multiprocessing.process模块​​来处理不同进程中wordlist的不同部分。

但是每个进程会自动固定到cpu核心吗?如果没有,有没有办法手动固定它们?

1 个答案:

答案 0 :(得分:2)

您可以通过导入使用Pythons multiprocessing import multiprocessing as mp并使用mp.cpu_count()查找处理器数量,并且应该适用于大多数平台。

要在特定CPU核心(在Linux中)启动程序/进程,您可以使用taskset并使用此guide作为参考。

另一种跨平台解决方案是使用psutil包用于python。

但是我建议你使用线程/进程池方法,因为在我看来你应该让操作系统为每个cpu / core分配任务。您可以查看How to utilize all cores with python multiprocessing如何解决此问题。