gpt4 book ai didi

python - Python 中的线程与异步执行

转载 作者:太空宇宙 更新时间:2023-11-04 06:15:37 26 4
gpt4 key购买 nike

总的来说,我对线程和异步编程还比较陌生,但我正在尝试理解这两者之间的区别,因为它与 CPython 中的 GIL 相关。

根据我的阅读,我了解到线程有自己的堆栈,这两种模型是不同的编程范例。但是考虑到它们因为GIL而不能并发运行,那么python线程是不是底层的一种异步执行?我真的很想更好地了解 python 解释器如何实现线程,特别是它如何确定一个线程何时阻塞而另一个线程可以执行?

最佳答案

GIL 只在执行 python 代码时发挥作用——调用用 C 实现的函数,例如,GIL 不应该干扰 afaik。此外,下载文件或从磁盘移动文件可以与 python 线程同时进行。

引自Python Wiki :

Note that potentially blocking or long-running operations, such as I/O, image processing, and NumPy number crunching, happen outside the GIL. Therefore it is only in multithreaded programs that spend a lot of time inside the GIL, interpreting CPython bytecode, that the GIL becomes a bottleneck.

您可能会查看 multiprocessing模块,它允许您克服 GIL 并在机器上使用多个内核。此外,还有一些工作正在进行中,使 PyPy(另一种 Python 解释器)在某一天变得无 GIL(只需搜索 STM/AME)。

关于python - Python 中的线程与异步执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15876761/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com