2024-05-29 07:30:15 发布
网友
在关于线程和GIL的Python documentation中,它说:
In order to emulate concurrency of execution, the interpreter regularly tries to switch threads (see sys.setswitchinterval())
sys.setswitchinterval()
为什么要这么做?这些上下文切换似乎只会浪费时间。运行每个进程,直到它发布GIL,然后运行下一个进程,不是更快吗?在
一个线程不一定有任何I/O。你可以让一个线程执行数字运算,另一个线程处理I/O。你的建议中的数字处理线程永远不会放弃GIL,所以另一个线程可以处理I/O
为了确保每个线程都能运行,默认情况下,如果线程之前因为等待I/O而没有删除GIL,那么它将在5毫秒后删除{a1}
您可以使用sys.setswitchinterval()更改此间隔。在
线程是一种简单的并发技术。要获得更有效的并发技术,请看一下^{},它使用协程提供单线程并发。在
一个线程不一定有任何I/O。你可以让一个线程执行数字运算,另一个线程处理I/O。你的建议中的数字处理线程永远不会放弃GIL,所以另一个线程可以处理I/O
为了确保每个线程都能运行,默认情况下,如果线程之前因为等待I/O而没有删除GIL,那么它将在5毫秒后删除{a1}
您可以使用
sys.setswitchinterval()
更改此间隔。在线程是一种简单的并发技术。要获得更有效的并发技术,请看一下^{} ,它使用协程提供单线程并发。在
相关问题 更多 >
编程相关推荐