多线程以抓取大量URL并下载

时间:2017-04-25 21:17:19

标签: python multithreading python-2.7

我一直在使用multithreading来执行此操作,但它会挂断很多。我在考虑multiprocessing,但我不确定这是否更有利。

我有一系列名字,每个名字都有一系列日期。我为范围内的每个日期生成一个线程,然后在里面工作。工作完成后,会将结果放入Queue() main以更新GUI。

是否正在使用Queue()来保存所需的网址,而不是一次开始说350个主题并等待?当我启动那么多线程时,Python似乎挂起了。

1 个答案:

答案 0 :(得分:0)

据我所知,线程在等待(I / O绑定工作)方面更好,并且多处理在cpu绑定工作方面更好。似乎线程/绿线是可行的方式。查看aiohttp库,或者我可以建议在异步的扭曲框架上运行scrapy。这些中的任何一个(尤其是scrapy)都可以解决您的问题。但是,当scrapy拥有你需要的一切时,为什么要通过自己的方式重新发明轮子呢?如果scrapy似乎对你的用例来说很臃肿,为什么不使用athonhttp中提供的非阻塞请求工具使用python 3. * async / await语法?