这是另一种解决方案。
您需要检查每个线程是否“活动”或已完成其任务。下面是一段简单的代码,向您展示逻辑:import threading
import time
requests = {}
urls = ['www.google.se', 'inbox.google.com']
class fetch_single(threading.Thread):
def __init__ (self, url):
threading.Thread.__init__(self)
self.url = url
self.response = None
def html(self):
return self.response.getData()
def run(self):
self.response = consumer.fetch(self.url)
requests[self.url] = self.html()
for url in urls:
thread = fetch_single(url)
thread.start()
while len(threading.enumerate()) > 1:
time.sleep(1)
for url in requests:
html = requests[url]
while len(threading.enumerate()) > 1将检查是否所有子线程都已完成/终止,但主线程(您的脚本)是否仍处于活动状态。
通常在这个循环中,你会检查线程内部的值,或者用某种通信系统来检查线程是否完成了处理。在
但这会给你一个更好的起点。在
还请注意,我选择将HTML数据保存在一个名为requests的全局变量中,而不是从线程中获取数据,因为这将是一个锁定操作。通常你会做一些事情,比如:
^{pr2}$
请注意,将while len...替换为:for thread in threading.enumerate():
thread.check_html()
或者是那些最适合你需要的东西。在