我正在编写一个Python程序,它将从文本文件中加载一个wordlist,然后尝试用每个单词解压缩一个存档。如果它没有使用所有的cpu核心,那就不会很严重了。由于GIL,如果我没弄错的话,Python中的线程不是一个很好的选择。
所以我想得到cpu_cores的数量,拆分wordlist并使用multiprocessing.process模块来处理不同进程中wordlist的不同部分。
但是每个进程会自动固定到cpu核心吗?如果没有,有没有办法手动固定它们?
答案 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如何解决此问题。