为什么绑定Python I/O的任务没有被GIL阻止?

巨蟒
穿线
文档说明“…线程仍然是一种合适的模型
如果要同时运行多个I/O绑定任务“,
显然是因为I/O绑定进程可以避免防止
CPU绑定任务中并发执行的线程

但我不明白的是,I/O任务仍然使用CPU。所以
它怎么能不遇到同样的问题呢?是因为I/O
绑定任务不需要内存管理

所有Python的阻塞I/O原语都会在等待I/O块解析时释放GIL——就这么简单!当然,在继续执行进一步的Python代码之前,他们需要再次获得GIL,但是在很长的机器周期间隔内,他们只是在等待一些I/O系统调用,他们不需要GIL,所以他们不会保留它

发表评论