如何在 Python 中将不同的进程固定到单独的 CPU 内核

scr*_*ter 1 parallel-processing python-3.x

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

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

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

uzr*_*uzr 5

您可以multiprocessing通过导入来使用 Python , import multiprocessing as mp并通过使用找出处理器的数量,mp.cpu_count()并且应该可以在大多数平台上工作。

要在特定 CPU 内核(在 linux 中)上启动程序/进程,您可以taskset使用本指南作为参考。

另一种跨平台解决方案是使用psutilpython 包。

但是,我建议您采用线程/进程池方法,因为在我看来,您应该让操作系统将任务分配给每个 CPU/核心。您可以查看如何使用 python 多处理的所有内核来解决这个问题。