【发布时间】:2011-05-30 00:42:38
【问题描述】:
我注意到,当我运行高度依赖 CPU 的 Python 程序时,它只使用一个内核。运行时是否可以为程序分配多个内核?
【问题讨论】:
标签: python parallel-processing cpu-cores
我注意到,当我运行高度依赖 CPU 的 Python 程序时,它只使用一个内核。运行时是否可以为程序分配多个内核?
【问题讨论】:
标签: python parallel-processing cpu-cores
您必须针对多个内核进行显式编程。有关 Python 中的许多并行处理解决方案,请参阅 this page 上的对称多处理选项。如果您不想比较选项,Parallel Python 是一个不错的选择,请查看示例 here。
虽然有些问题不能利用多核。想一想如何在三个朋友的帮助下更快地跑上楼梯。不会发生的!
【讨论】:
如果您的问题的任何部分可以并行运行,您应该查看multiprocessing module
【讨论】:
我想知道为什么还没有人提到 CPython 的 GIL(全局解释器锁)。这基本上意味着一个 Python 解释器中的多个线程不能使用多核的功能,因为许多操作都受到全局锁的保护,以实现线程安全。这仅适用于少量应用程序——CPU 密集型应用程序。更多信息,只要搜索“GIL”这个词,已经有很多问题了(比如that one)。
这个答案当然假设您实际上正在使用多个线程,否则您将无法使用多个内核(multiprocessing 是另一种可能性)。
【讨论】: