0

注意:我缺乏对这个主题的教育,所以我可能会做出一些幼稚的假设。

假设您有一个执行阻塞 I/O 的函数。您需要运行此功能 n 次。

如果您要简单地生成 n 个线程(使用 threading 模块)并同时启动它们,那么简单地使用 GIL 来管理线程(基于 I/O)而不是使用 multiprocessing.pool 模块是否可行管理子流程?

4

2 回答 2

4

将实现细节用作代码的核心功能是一种不好的做法。GIL 是 CPython 的一个实现细节,在其他实现中不存在。

使用旨在做你想做的事情的东西。

于 2012-06-08T19:46:48.193 回答
0

GIL 在这里有什么意义?你期望从中得到什么?

您可以生成 n 个线程并让它们都执行阻塞 I/O,而无需 GIL。

如果你想“管理”线程——例如,加入所有线程以便你知道什么时候完成——你仍然需要明确地这样做;GIL 没有帮助。

于 2012-06-08T22:20:45.017 回答