我正在学习多线程Python(CPython)。我知道GIL以及它如何限制线程到单核(在大多数情况下)。
我知道I / O功能可以运行多核,但是我无法找到标准库的哪些部分可以跨多个核运行的列表。我相信urllib可以运行多核,允许在单独的核心上的线程上下载(但是在文档中无法找到对此的确认)。
我想知道的是,标准库的哪些部分将运行多核,因为这似乎没有在文档中指定。
取自文档:
但是,某些扩展模块(标准模块或第三方模块)的设计旨在在执行压缩或散列等计算密集型任务时释放GIL。此外,执行I / O时始终会释放GIL。
答案 0 :(得分:0)
使用multiprocessing包,您可以编写真正的并行程序,其中单独的进程在不同的核上运行。每个子流程可以使用哪些库(标准或非标准)没有限制。
关于多进程编程的棘手部分是当进程需要交换信息时(例如,传递彼此的值,等待彼此完成某个任务)。 multiprocessing
包中包含多个工具。