标准库的哪些部分可以运行多核?

时间:2017-04-11 10:05:33

标签: python multithreading python-3.x

我正在学习多线程Python(CPython)。我知道GIL以及它如何限制线程到单核(在大多数情况下)。

我知道I / O功能可以运行多核,但是我无法找到标准库的哪些部分可以跨多个核运行的列表。我相信urllib可以运行多核,允许在单独的核心上的线程上下载(但是在文档中无法找到对此的确认)。

我想知道的是,标准库的哪些部分将运行多核,因为这似乎没有在文档中指定。

取自文档:

  

但是,某些扩展模块(标准模块或第三方模块)的设计旨在在执行压缩或散列等计算密集型任务时释放GIL。此外,执行I / O时始终会释放GIL。

1 个答案:

答案 0 :(得分:0)

使用multiprocessing包,您可以编写真正的并行程序,其中单独的进程在不同的核上运行。每个子流程可以使用哪些库(标准或非标准)没有限制。

关于多进程编程的棘手部分是当进程需要交换信息时(例如,传递彼此的值,等待彼此完成某个任务)。 multiprocessing包中包含多个工具。