我观看了关于GIL的精彩演示,以及在解释器中运行时,一次只能运行1个单线程.对于线程之间的切换,
python似乎也不是很聪明.
如果我正在线程化一些仅在解释器中运行的操作,并且它不是特别重CPU,并且我使用一个线程锁,其中一次只能运行一个线程用于这个相对较短的解释器绑定操作,那么该锁实际上是否会什么运行得慢?而不是如果没有必要的锁,并且所有线程可以同时运行.
如果只有1个线程被锁定,那么python解释器是否会知道上下文切换?
编辑:
通过’让事情变慢’我的意思是如果python是上下文切换到一堆锁定的线程,即使线程实际上没有运行,也可能会降低性能
最佳答案
python is not very intelligent about switching between threads
Python线程以某种方式工作:-)
if I use a thread lock where only 1 thread can run at a time… will that lock actually make anything run slower
呃,不,因为没有别的东西可以运行,所以没有其他东西可以运行得更慢.
If all but 1 threads are locked, will the python interpreter know not to context switch?
是.内核知道哪些线程可以运行.如果没有其他线程可以运行,那么逻辑上讲(就线程而言)python解释器将不会从唯一可运行的线程上下文切换.线程不知道它什么时候被切断(怎么可能,它没有运行).