使用GIL作为线程池

时间:2012-06-08 19:45:20

标签: python multithreading multiprocessing gil

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

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

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

2 个答案:

答案 0 :(得分:4)

将实现细节用作代码的核心功能是不好的做法。 GIL是CPython的实现细节,在other implementations中不存在。

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

答案 1 :(得分:0)

GIL如何与此相关?你有什么期望摆脱它?

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

如果你想“管理”线程 - 例如,加入所有线程,那么你知道什么时候完成 - 你仍然需要明确地做到这一点; GIL无济于事。