Fai*_*lde 3 python multiprocessing gil
由于存在GIL,是否有可能在python中具有真正的并行性?据我所知,每个线程在执行之前获取GIL而其他线程一直等到GIL被释放.为什么GIL如果是这样一个瓶颈
Python,该语言不一定强制执行GIL.这是该语言的不同实现,可能有也可能没有GIL.
CPython(事实上的实现)有GIL.因此,在使用它时,您无法拥有真正的并行线程.但是,您可以使用多处理来获得并行性.PyPy,该语言的另一个实现现在也有GIL.
还有其他Python语言实现(例如Jython和IronPython),它们没有GIL,你可以使用线程来运行并行操作.
Cython有一个GIL,但您可以使用with语句释放它.
提到的项目链接:
有关此主题的更多资源:
有关编程堆栈交换的问题:https://softwareengineering.stackexchange.com/questions/186889/why-was-python-written-with-the-gil(感谢@Rogalski)
Python Wiki:https://wiki.python.org/moin/GlobalInterpreterLock
David Beazley的演讲 - https://www.youtube.com/watch?v=Obt-vMVdM8s
来自Jeff Knupp的文章:https://jeffknupp.com/blog/2013/06/30/pythons-hardest-problem-revisited/
| 归档时间: |
|
| 查看次数: |
962 次 |
| 最近记录: |