首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Python线程模块的处理顺序

Python线程模块的处理顺序
EN

Stack Overflow用户
提问于 2012-04-02 16:57:01
回答 3查看 170关注 0票数 2

我正在编写一个web爬虫,它同时处理多个URL,并以下列方式工作:

  1. 从seed_list.txt中包含的URL列表中获取一个URL,
  2. 将其抓取并将数据写入data.txt;

就像大多数网络爬虫一样。

当我使其为单线程时,我可以以与seed_list.txt中的URL相同的顺序获得seed_list.txt中的数据,但当它是多线程时,我似乎无法控制它,因为每个线程都会在数据完成后将数据写入data.txt。

有没有办法使我的网页爬虫多线程,但保持原来的秩序?

非常感谢!

@Lance,Ignacio和Maksym,

谢谢你们的帮助--你们的回答一定会为我指明正确的方向。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-04-02 17:19:12

您可以创建一个类,该类具有来自seed_list.txt、URL和来自web的数据的行的索引号。可以使用行号和URL创建该类型的对象,然后将其传递给将数据放入对象的辅助线程,然后将该对象传递给写入线程,后者将根据行号对对象进行排序,并根据需要输出数据。

票数 1
EN

Stack Overflow用户

发布于 2012-04-02 16:59:30

创建一个额外的线程,负责枚举来自每个爬虫线程的结果。

票数 2
EN

Stack Overflow用户

发布于 2012-04-02 17:30:54

您可以运行一个特殊的线程,该线程输出数据并通过队列与其交互。我的意思是,您的“爬行”线程不会将结果写入文本文件,而是将其放到队列中。

这个“输出”线程可以对结果进行排序/筛选。

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

https://stackoverflow.com/questions/9980517

复制
相关文章

相似问题

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