当前位置: 首页 > 知识库问答 >
问题:

多线程抓取大量URL和下载

洪和平
2023-03-14

我一直在使用多线程来实现这一点,但是它挂起了很多。我在考虑多处理,但我不确定这是否更有利。

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

使用Queue()保存所需的URL是否比一次启动350个线程并等待更好?当我启动那么多线程时,Python似乎挂起了。

共有1个答案

钱峻
2023-03-14

据我所知,线程更擅长于等待(I/O绑定的工作),而多处理更擅长于cpu绑定的工作。看来线程/绿色线程是一条可行之路。查看aiohttp库,或者我可以推荐运行在异步twisted框架上的scrapy。这两种方法中的任何一种(特别是刮痧)都能解决你的问题。但是,既然scrapy拥有你所需要的一切,为什么还要通过自己滚动来重新发明轮子呢?如果scrapy在您的用例中显得过于臃肿,为什么不使用python 3使用aiohttp中提供的非块请求工具。*异步/等待语法?

 类似资料:
  • 此服务器是使用mongoose web服务器改写的并发抓取多个页面的服务器, 使用可以查看test.php

  • 本文向大家介绍python实现多线程抓取知乎用户,包括了python实现多线程抓取知乎用户的使用技巧和注意事项,需要的朋友参考一下 需要用到的包: beautifulsoup4 html5lib image requests redis PyMySQL pip安装所有依赖包: 运行环境需要支持中文 测试运行环境python3.5,不保证其他运行环境能完美运行 需要安装mysql和redis 配置

  • 问题内容: 我仍在全神贯注地了解Java中并发的工作方式。我知道(如果您订购的是OO Java 5并发模型)则分别实现a 或with 或or 方法,并且它应该使您尽可能多地并行实现该方法。 但是我仍然不了解Java并发编程的内在知识: 一个是怎样的方法分配给执行工作的同时适量的? 作为一个具体的例子,如果我有一个I / O绑定的方法,该方法将从本地系统上的文件中读取Herman Melville的

  • 由于全局解释器锁的存在,python3的多线程是伪并行的。 现在看进程。如果一个CPU仅仅有4个核,我在设置pool的时候,设置Pool(5),此时,有5个并行的进程在同时运行,这个说法不对吧,任何时刻,由于CPU的束缚,仅仅只可以有4个进程并行。 我的理解对吧?

  • 我有下面的代码,可以使用JSoup抓取网站,但我想同时抓取多个URL。我将URL存储在一个数组中,但无法使其工作。如果我想使用它,如何在多线程中实现这段代码?多线程对这样的应用程序有好处吗?

  • 本文向大家介绍ASP下通过Adodb.Stream实现多线程下载大文件,包括了ASP下通过Adodb.Stream实现多线程下载大文件的使用技巧和注意事项,需要的朋友参考一下 有个朋友 做 某种小众音乐交换站的(他们那个行业的昵图网),需要用到付费下载。尝试过 防盗链,不太理想,最终使用了 Adodb.Stream 读取,直接输出。 解决了 盗版的问题,但是新的问题又来了。Adodb.Stream