egg*_*ert 8 python cpython multiprocessing python-internals
我知道cPython有一个GIL,因此如果不使用多处理模块,您的脚本就无法在多个内核上运行.但有没有什么可以阻止内置功能,如使用多核进行排序?我不明白cPython结构,但我认为我问的问题是'内置函数,如sort,any和list comprehension实际上在GIL之下?
小智 5
cPython GIL只允许单个线程在进程内运行字节码 - 它与非抽象的CPU无关.
也就是说,截至目前,除非您正在调用某些内容来分叉/使用多个进程,或者您的操作系统/硬件正在捕获调用并为您执行此操作(极不可能),您将看到所有操作都发生在单个CPU内核上.
在C中实现的内置函数发生在"GIL下面",因为它们是对底层API的更直接调用,但是将参数和数据放在GIL中,因为您使用字节码进行读写.
顺便说一句,如果你想更好地理解cPython与其主机的关系,我会建议以下高级官方概述和/或PDF幻灯片以及我为会议编写的游乐场.
| 归档时间: |
|
| 查看次数: |
137 次 |
| 最近记录: |