【发布时间】:2012-07-24 19:55:02
【问题描述】:
我正在尝试解决一个问题,我有很多(大约一万个)URL,并且需要从所有这些 URL 中下载内容。到目前为止,我一直在“链接中的链接:”循环中执行此操作,但是现在花费的时间太长了。我认为是时候实现多线程或多处理方法了。我的问题是,最好的方法是什么?
我知道全局解释器锁,但由于我的问题是网络限制的,而不是 CPU 限制的,我认为这不会是一个问题。我需要将数据从每个线程/进程传回主线程/进程。我不需要帮助实施任何方法(Terminate multiple threads when any thread completes a task 涵盖该方法),我需要关于采用哪种方法的建议。我目前的做法:
data_list = get_data(...)
output = []
for datum in data:
output.append(get_URL_data(datum))
return output
没有其他共享状态。
我认为最好的方法是创建一个包含所有数据的队列,并让多个工作线程从输入队列中弹出,获取 URL 数据,然后推送到输出队列。
我说的对吗?有什么我想念的吗?这是我第一次用任何语言实现多线程代码,我知道这通常是一个难题。
【问题讨论】:
标签: python multithreading