繁体   English   中英

Python线程模块的处理顺序

[英]Processing Order of Python's Threading Module

我正在编写一个可同时处理多个URL并以以下方式工作的网络搜寻器:

  1. 它从seed_list.txt中包含的URL列表中获取URL,

  2. 对其进行爬网并将数据写入data.txt;

就像大多数网络爬虫的工作方式一样。

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

有没有一种方法可以使我的Web搜寻器成为多线程但可以保持原始顺序?

非常感谢你!


@ Lance,Ignacio和Maksym,

谢谢大家的帮助-您的回答肯定会指出正确的方向。

创建一个额外的线程,该线程负责枚举每个搜寻器线程的结果。

您可以创建一个类,该类具有从seed_list.txt的行的索引号,URL以及来自网络的数据的位置。 可以使用行号和URL创建这种类型的对象,然后将其传递到工作线程,该线程将数据放入该对象,然后将该对象传递给一个写线程,该线程将按行对对象进行排序编号并根据需要输出数据。

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

这个“输出”线程可以对您的结果进行排序/过滤。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM