python GIL 的存在是否意味着在 python 多线程中,相同操作与在单线程中重复操作没有太大区别?
例如,如果我需要上传两个文件,那么在两个线程中进行而不是一个接一个地上传有什么好处?。
我尝试了两种方式的大数学运算。但它们似乎花费几乎相同的时间来完成。
这对我来说似乎还不清楚。有人可以帮我吗? 谢谢。
最佳答案
Python 的线程得到的评价比它们应得的稍差。在三种(好吧,2.5 种)情况下,他们实际上为您带来了好处:
如果非 Python 代码(例如 C 库、内核等)正在运行,其他 Python 线程可以继续执行。它只是纯 Python 代码,不能同时在两个线程中运行。因此,如果您正在执行磁盘或网络 I/O,线程确实可以为您带来一些好处,因为大部分时间都花在 Python 本身之外。
GIL 实际上不是 Python 的一部分,它是 CPython 的一个实现细节(核心 Python 开发人员致力于的“引用”实现,以及如果你只是在你的 Linux 机器上运行“python”或其他东西,你通常会得到。
Jython、IronPython 和 Python 的任何其他重新实现通常没有有 GIL,并且多个纯 Python 线程可以同时执行。
0.5 案例:即使您完全是纯 Python 并且看不到线程的性能优势很少或没有,但就开发人员时间和使用线程解决的难度而言,某些问题确实很方便。当然,这在一定程度上也取决于开发人员。
关于python - 关于python GIL的一个问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1912557/