当前位置:  开发笔记 > 编程语言 > 正文

对于我的应用程序,有多少线程是最佳的?

如何解决《对于我的应用程序,有多少线程是最佳的?》经验,为你挑选了2个好方法。

我有一个简单的Python网络爬虫.它使用SQLite来存储其输出并保留队列.我想让爬虫程序多线程,以便它可以一次抓取几个页面.我想我会创建一个线程并立即运行该类的几个实例,因此它们都同时运行.但问题是,我应该一次运行多少人?我应该坚持两个吗?我可以走高吗?什么线程的合理限制是什么?请记住,每个线程都会转到网页,下载html,运行一些正则表达式搜索,将它找到的信息存储在SQLite数据库中,然后从队列中弹出下一个URL.



1> cletus..:

您可能会发现您的应用程序带宽有限,而不是CPU或I/O限制.

因此,添加任意多个,直到性能开始降低.

您可能会遇到其他限制,具体取决于您的网络设置.就像你在ADSL路由器后面一样,并发NAT会话的数量会受到限制,这可能会影响一次发出太多的HTTP请求.制作太多,您的提供商可能会将您视为感染病毒等.

还有一个问题是,您正在抓取的服务器可以处理多少请求,以及您想要加载多少负载.

我只用了一个线程就写了一个爬虫.我花了大约一天的时间来处理我想要的所有信息,大约每两秒一页.我可以更快地完成它,但我认为这对服务器来说不那么重要了.

所以真的没有硬性和快速的答案.假设一个1-5兆位的连接我会说你可以很容易地拥有多达20-30个线程而没有任何问题.



2> Dustin..:

如果您已经有一种简单的方法来提供任意长的URL列表,我会使用一个线程并使用延迟信号量或任务合作者进行扭曲.

您几乎不可能制作比基于扭曲的爬虫更快或更小的多线程爬虫.

推荐阅读
夏晶阳--艺术
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有