我注意到当我运行严重的CPU依赖性Python程序时,它只使用一个核心。我运行程序时是否可以为该程序分配多个内核?

有帮助吗?

解决方案

您必须针对多个内核进行明确编程。请参阅上的对称多处理选项 这一页 对于Python中的许多平行处理解决方案。 平行python 如果您不愿意比较选项,请查看示例,这是一个不错的选择 这里.

不过,有些问题无法利用多个内核。考虑一下您如何在三个朋友的帮助下更快地上楼梯。不会发生!

其他提示

如果您的问题的任何部分可以并行运行,则应查看 多处理模块

我想知道为什么还没有人提到Cpython的Gil(全球口译员锁)。这基本上意味着一个python解释器内部的多个线程不能使用多个内核的力量,因为许多操作都受到全局锁定的保护,以使其成为线程安全。这仅适用于少量应用程序 - CPU结合的应用程序。有关更多信息,只需搜索“ GIL”一词,就已经有很多问题(例如 那个, , 例如)。

当然,这个答案假设您实际上使用了多个线程,否则您将无法使用多个内核(多处理 将是另一种可能性)。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top