我正在写一个Python程序,它将从文本文件加载一个单词表,然后尝试使用每个单词解压缩存档。如果没有使用所有的cpu核心,那就不是很严重。 GIL的Bcuz,如果我没有弄错,用Python进行线程化并不是一个好的选择。所以我想获得cpu_cores的数量,拆分wordlist并使用multiprocessing.process模块在不同的进程中处理wordlist的不同部分。但是每个进程都会自动固定到cpu内核上吗?如果没有,是否有办法手动固定它们?如何将不同的进程固定到Python中的单个cpu核心
0
A
回答
2
您可以通过导入 import multiprocessing as mp
使用蟒蛇multiprocessing
并通过mp.cpu_count()
找出处理器的数量,并应在大多数平台上工作。
要在特定CPU内核上启动程序/进程(在Linux中),您可以使用taskset
并将此guide作为参考。
另一种跨平台解决方案是使用python的psutil
包。
但是我建议你使用线程/进程池方法,因为在我看来你应该让操作系统把任务分配给每个cpu/core。你可以看看How to utilize all cores with python multiprocessing如何解决这个问题。
相关问题
- 1. 如何将muti核心CPU转换为单核心系统
- 2. 固定一个pthread到一个核心
- 3. 如何在多核环境中将进程/线程指定给某个核心?
- 4. 如何使用Nodejs多CPU核心进行多进程?
- 5. 衡量一个进程独立的CPU核心使用情况?
- 6. 如何在单个CPU的多个CPU核心上设置关联,而不是在多个CPU上?
- 7. 将线程分配给特定的CPU核心
- 8. 本地在不同的CPU核心上运行jupyter内核?
- 9. 限制码头集装箱到一个单一的CPU核心
- 10. 如何将进程绑定到freebsd/linux中的特定内核
- 11. RcppArmadillo在几个CPU核心
- 12. 如何控制在不同内核中运行的不同进程的进程
- 13. 如何获得C#中每个核心的CPU负载?
- 14. C进程相对于核心的CPU负载
- 15. OpenMP线程在相同的CPU核心上执行
- 16. 如何在不同的CPU内核上生成线程?
- 17. 如何确定PC的CPU核心数量?
- 18. 每个JVM或每个CPU核心的线程数
- 19. 获取JavaScript中的CPU核心数量?
- 20. 如何将不同的固定行分成不同的格式?
- 21. IIS,多个CPU核心,应用程序池和工作进程 - 单个站点的最佳配置?
- 22. 是否可以使用CPU上的单个核心运行Tensorflow?
- 23. 如何获得超过2个核心的CPU使用率?
- 24. CPU核心线程分类功能
- 25. SPARC CPU VS线程VS核心
- 26. 叉与单个核心上的线程
- 27. CPU核心与在Tomcat
- 28. IIS将回收asp.net核心进程吗?
- 29. 利用多个CPU核心和Tensorflow
- 30. 如何充分利用所有的CPU核心Clojure中
感谢您的回答..是否在Windows上工作的任务?如果不是,有没有Windows替代? – scripter
@scripter我用psutil软件包更新了我的答案,它是一个可在Windows上工作的跨平台解决方案。要在Windows上使用taskset,您可能必须使用Cygwin或类似的东西。 – uzr
@scripter,创建进程时,Windows cmd.exe shell的'start'命令可以设置CPU关联和首选NUMA节点。也许有一种方法可以使用WMI(即wmic.exe)修改正在运行的进程的关联性。您可以在PowerShell中使用'(Get-Process -Id $ target_pid).ProcessorAffinity = $ affinity_mask'来实现。 – eryksun