python GIL的存在是否意味着在python多线程中 相同的 操作与在单线程中重复操作有什么不同?
例如,如果我需要上传两个文件,那么在两个线程中执行而不是一个接一个地上传它们有什么好处?
我以两种方式尝试了一次大型数学运算。但是他们似乎花费几乎相同的时间才能完成。
这似乎对我来说还不清楚。有人可以帮我吗?谢谢。
Python的线程在说唱方面要比应有的差一些。在三种(实际上是2.5种)案例中,它们实际上为您带来了好处:
如果非Python代码(例如C库,内核等)正在运行,则其他Python线程可以继续执行。这是纯Python代码,无法一次在两个线程中运行。因此,如果您正在执行磁盘或网络I / O,则线程确实可以为您带来收益,因为大部分时间都花在了Python本身之外。
GIL实际上不是 Python的 一部分,它是 CPython 的实现细节(核心Python开发人员从事的“参考”实现,通常只要在Linux机器上运行“ python”之类的东西就可以得到)。
Jython,IronPython和其他任何重新实现的Python通常都 没有 GIL,并且多个纯Python线程 可以 同时执行。