我有两个队列用于执行不同的任务,第一次抓取将开始抓取列表中的链接,然后它将生成更多链接以抓取到队列中的一个,并且还会生成到队列二上不同任务的新链接,我的程序正在运行,但问题是:当队列2的工作人员开始运行时,它会阻止工作人员排队,他们基本上没有并行运行,他们正在等待彼此完成任务。我怎样才能让它们平行运行?如何创建两个不同队列并行运行的线程? - Python
import threading
from queue import Queue
queue = Queue()
queue_two = Queue()
links = ['www.example.com', 'www.example.com', 'www.example.com',
'www.example.com', 'www.example.com', 'www.example.com',
'www.example.com', 'www.example.com', 'www.example.com']
new_links = []
def create_workers():
for _ in range(4):
t = threading.Thread(target=work)
t.daemon = True
t.start()
for _ in range(2):
t = threading.Thread(target=work_two)
t.daemon = True
t.start()
def work():
while True:
work = queue.get()
#do something
queue.task_done()
def work_two():
while True:
work = queue_two.get()
#do something
queue_two.task_done()
def create_jobs():
for link in links:
queue.put(link)
queue.join()
crawl_two()
crawl()
def create_jobs_two():
for link in new_links:
queue_two.put(link)
queue_two.join()
crawl_two()
def crawl():
queued_links = links
if len(queued_links) > 0:
create_jobs()
def crawl_two():
queued_links = new_links
if len(queued_links) > 0:
create_jobs_two()
create_workers()
crawl()