是否有任何内置函数阻止I/O不允许其他线程运行?

dan*_*ano 11 python multithreading python-multithreading

我在thread今天的模块文档的"警告"部分中遇到了这个有趣的声明:

并非所有可能阻止等待I/O的内置函数都允许其他线程运行.(最流行的(time.sleep(),file.read(), select.select())正常工作.)

几乎所有其他地方我都见过Python线程,我们总是假设所有执行I/O的内置函数都会释放GIL,这意味着其他线程可以在函数阻塞时运行.据我所知,I/O操作阻止其他线程的唯一风险是,如果它是由一个忽略释放GIL的错误C扩展.

那么,来自thread文档的这句话实际上是真的吗?是否有任何不释放GIL的内置阻塞I/O操作?到目前为止,我还没有找到任何具体的例子.

dan*_*ano 10

以下是Guido van Rossum关于此问题的官方消息:

不是在我最疯狂的梦想中,我可以预期这种说法在20年后仍会出现在文档中.:-)请摆脱它.

所以我的问题的答案是"不".