python - 为什么 GIL 不会阻止 Python I/O 绑定(bind)任务?

标签 python multithreading

python threading 文档指出“......线程仍然是一个合适的模型 如果你想同时运行多个 I/O-bound 任务", 显然是因为 I/O-bound 进程可以避免阻止 来自 CPU 密集型任务中并发执行的线程。

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

最佳答案

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

关于python - 为什么 GIL 不会阻止 Python I/O 绑定(bind)任务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29270818/

相关文章:

java - java中同步块(synchronized block)的替代方案

python - 字典中的范围函数

JAVA使用随机字符串进行同步

ios - coreData executeFetchRequest 方法的竞争条件导致 nil 数据的问题

python导入sqlite错误

android - 我是否必须删除 Android 中的线程

java - 线程优先级没有按预期工作?

python - json.dumps 值错误 : Extra data unable to dump json outputs

python - 在 Python 中检索对对象的引用列表

python - 使用 app.yaml 在 appengine 中指定自定义 URL 架构?