python如何处理线程锁定/上下文切换?

我观看了关于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解释器将不会从唯一可运行的线程上下文切换.线程不知道它什么时候被切断(怎么可能,它没有运行).

点赞