Python threading module文档说的是这样的
在CPython中,由于Global Interpreter Lock,只有一个线程可以 一次执行Python代码(即使某些性能导向 图书馆可能会克服这个限制)。如果你想要你的 应用程序,以更好地利用计算资源 多核机器,建议您使用多处理。然而, 如果要运行多个线程,线程仍然是一个合适的模型 同时进行I / O绑定任务。
有人可以解释我是否可以在我的情况下使用线程模块?
我将检测网站使用的框架。
以下是我的应用的工作原理
由于我有1000万个域名,因此需要很长时间。所以我想通过使用线程来加速这个过程。
但我不确定我的应用程序是否受I / O限制。有人可以解释一下吗?
三江源
答案 0 :(得分:1)
我想,最耗时的活动将是获取所有网址。
所以问题的答案是:是的,您的应用很可能受到I / O限制。
您打算逐个删除域名,这会导致很长的处理时间。你肯定会同时做到这一点。描述了一个与抓取网站相关的in my answer to similar question解决方案。
无论如何,您的网址数量似乎非常大,您可能需要利用将工作分成多个工作人员 - 为此,您可以使用例如芹菜框架。但是,由于您的任务实际上是I / O限制,如果您的员工在多台计算机上工作,理想情况下可以使用独立连接,那么您只能获得一些速度。我在DigitalOcean机器上做了类似的任务,效果非常好。