关于python GIL的一个问题

asd*_*dfg 3 python multithreading gil

python GIL的存在是否意味着在python多线程中,相同的操作与在单个线程中重复它没有那么不同?

例如,如果我需要上传两个文件,那么在两个线程中执行它们的优势是什么,而不是一个接一个地上传它们?

我尝试了两种方式的大数学运算.但他们似乎花了几乎相同的时间来完成.

这似乎对我来说不清楚.有人可以帮我吗?谢谢.

Nic*_*ght 11

Python的线程比他们应得的更糟糕的说唱.有三个(好吧,2.5)案例,他们实际上给你带来了好处:

  • 如果非Python代码(例如C库,内核等)正在运行,则其他Python线程可以继续执行.它只是纯Python代码,不能同时在两个线程中运行.因此,如果您正在进行磁盘或网络I/O,线程确实可以为您买点东西,因为大部分时间都花在Python本身之外.

  • GIL实际上并不是Python的一部分,它是CPython的实现细节(核心Python开发人员所使用的"参考"实现,如果你只是在你的Linux机器上运行"python",你通常会得到它).

    Jython,IronPython以及Python的任何其他重新实现通常都没有 GIL,并且多个纯Python线程可以同时执行.

  • 0.5案例:即使你完全是纯Python并且看到线程的性能很少或没有,但是在开发人员时间和使用线程解决的难度方面,一些问题确实很方便.当然,这部分取决于开发人员.