Heim > Artikel > Backend-Entwicklung > Probleme mit der Python-Multithread-Aufgabenverteilung
Ich möchte jetzt den Inhalt einer Website mit mehreren Threads crawlen. Angenommen, der Website-Inhalt hat 105 Seiten, aber aufgrund von Maschinenbeschränkungen können nur zehn Threads für das Crawlen aktiviert werden Seiten 1-10?, der zweite Thread deckt die Seiten 11-20 ab und so weiter, bis der zehnte Thread für die Seiten 91-105 verantwortlich ist. Wie sollte diese Idee in Python-Code geschrieben werden?
Ich möchte jetzt den Inhalt einer Website mit mehreren Threads crawlen, aber aufgrund von Maschinenbeschränkungen können nur zehn Threads für das Crawlen aktiviert werden Seiten 1-10?, der zweite Thread deckt die Seiten 11-20 ab und so weiter, bis der zehnte Thread für die Seiten 91-105 verantwortlich ist. Wie sollte diese Idee in Python-Code geschrieben werden?
python3
<code class="python"> import urllib import queue import threading def download(queue,lck): """ 工作者,当队列中没有任务的时候就执行退出。 """ while not queue.empty(): pg = queue.get() #在此写 抓取网页的代码 #然后把抓到的内容写入文件 lck.acquire() print ('第 %d 页已完成'%pg) lck.release() queue.task_done() def main(): """ 主线程, """ print ('开始下载……') lck = threading.Lock() q = queue.Queue() for pg in range(1,106): #网站内容有105页 q.put(pg) for i in range(10):#十个线程 t = threading.Thread(target=download, args=(q,lck)) t.start() q.join() # 等待所以任务完成 print ('结束') if __name__ == '__main__': main() </code>