注意:我缺乏对这个主题的教育,所以我可能会做出一些幼稚的假设。
假设您有一个执行阻塞 I/O 的函数。您需要运行此功能 n 次。
如果您要简单地生成 n 个线程(使用 threading 模块)并同时启动它们,那么简单地使用 GIL 来管理线程(基于 I/O)而不是使用 multiprocessing.pool 模块是否可行管理子流程?
注意:我缺乏对这个主题的教育,所以我可能会做出一些幼稚的假设。
假设您有一个执行阻塞 I/O 的函数。您需要运行此功能 n 次。
如果您要简单地生成 n 个线程(使用 threading 模块)并同时启动它们,那么简单地使用 GIL 来管理线程(基于 I/O)而不是使用 multiprocessing.pool 模块是否可行管理子流程?
将实现细节用作代码的核心功能是一种不好的做法。GIL 是 CPython 的一个实现细节,在其他实现中不存在。
使用旨在做你想做的事情的东西。
GIL 在这里有什么意义?你期望从中得到什么?
您可以生成 n 个线程并让它们都执行阻塞 I/O,而无需 GIL。
如果你想“管理”线程——例如,加入所有线程以便你知道什么时候完成——你仍然需要明确地这样做;GIL 没有帮助。