私は異なるタスク用に2つのキューを持っていますが、最初のクロールではリスト内のリンクをクロールし始め、さらにキューへのリンクを生成し、キュー2上の別のタスクへの新しいリンクを生成します私のプログラムは動作していますが、問題は次のとおりです。キュー2のワーカーが実行を開始すると、キュー1からワーカーが停止しますが、基本的に並行して実行されていません。どうすればそれらを並行して走らせることができますか?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()