我注意到当我运行依赖于CPU的高级python程序时,它只使用一个核心。在运行程序时是否可以为程序分配多个内核?
答案 0 :(得分:15)
您必须为多个核心明确编程。有关Python中的许多并行处理解决方案,请参阅this page上的Symmetric Multiprocessing选项。 Parallel Python是一个不错的选择,如果你不愿意比较选项,请查看示例here。
但有些问题无法利用多核。考虑如何在三个朋友的帮助下更快地跑上楼梯。不会发生!
答案 1 :(得分:4)
如果问题的任何部分可以并行运行,您应该查看multiprocessing module
答案 2 :(得分:4)
我想知道为什么没人提到CPython的GIL(Global Interpreter Lock)。它基本上意味着一个Python解释器中的多个线程不能使用多个内核的强大功能,因为许多操作都受全局锁保护,以便是线程安全的。这仅适用于少量应用程序 - 受CPU限制的应用程序。有关详细信息,只需搜索“GIL”一词,就已经有很多问题(例如that one)。
这个答案当然假设你实际上是在使用多个线程,否则你无论如何也无法使用多个核心(multiprocessing是另一种可能)。