首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python多线程-全局解释器锁

Python多线程-全局解释器锁
EN

Stack Overflow用户
提问于 2014-05-06 23:39:42
回答 1查看 205关注 0票数 0

Python文档显示了这样的内容

在CPython中,由于全局解释器锁,只有一个线程可以一次执行Python代码(尽管某些面向性能的库可能克服了这个限制)。如果您希望您的应用程序更好地利用多核计算机的计算资源,建议您使用多处理。但是,如果要同时运行多个I/O绑定任务,线程仍然是一个合适的模型。

有人能解释一下在我的情况下是否可以使用线程模块吗?

我要检测网站使用的框架。

下面是我的应用程序的工作原理

  • 我的MySQL数据库包含大约1000万个域( id、域、框架)
  • 从数据库中获取1000行
  • 使用请求模块逐个刮取域
  • 检测框架
  • 使用结果更新数据库行。

因为我有1000万个域名,这需要很长时间。所以我想通过使用线程来加速这个过程。

但我不确定我的应用程序是否绑定了I/O。有人能解释一下吗?

谢谢你

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-05-06 23:50:36

我想,最昂贵的活动将是获取所有的urls。

所以你的问题的答案是:是的,你的应用程序很可能是I/O绑定的。

您计划一个一个地刮取域,这将导致处理时间非常长。你一定要同时这样做。一种解决方案是描述与刮取网站相关的在我对类似问题的回答中

无论如何,您的urls数量似乎很大,您可能需要利用将工作分配给多个工作人员的优势--为此,您可以使用例如芹菜框架。但是,由于您的任务实际上是I/O绑定的,如果您的工作人员在多台计算机上工作,最好是具有独立的连接性,那么您只会获得一定的速度。我在DigitalOcean机器上做了类似的工作,而且效果很好。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23506323

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档