当前位置:Gxlcms > PHP教程 > python多线程任务分发的问题

python多线程任务分发的问题

时间:2021-07-01 10:21:17 帮助过:5人阅读

我现在要多线程抓取一个网站内容,假设这个网站内容有105页,但是由于机器限制只能开启十个线程抓取,那么我如何做到第一个线程负责抓1-10页,第二个线程11-20页以此类推,直到最后第十个线程负责抓取91-105页,这个思路该怎么写成python代码啊?

回复内容:

我现在要多线程抓取一个网站内容,假设这个网站内容有105页,但是由于机器限制只能开启十个线程抓取,那么我如何做到第一个线程负责抓1-10页,第二个线程11-20页以此类推,直到最后第十个线程负责抓取91-105页,这个思路该怎么写成python代码啊?

python3

  1. <code class="python">
  2. import urllib
  3. import queue
  4. import threading
  5. def download(queue,lck):
  6. """
  7. 工作者,当队列中没有任务的时候就执行退出。
  8. """
  9. while not queue.empty():
  10. pg = queue.get()
  11. #在此写 抓取网页的代码
  12. #然后把抓到的内容写入文件
  13. lck.acquire()
  14. print ('第 %d 页已完成'%pg)
  15. lck.release()
  16. queue.task_done()
  17. def main():
  18. """
  19. 主线程,
  20. """
  21. print ('开始下载……')
  22. lck = threading.Lock()
  23. q = queue.Queue()
  24. for pg in range(1,106): #网站内容有105页
  25. q.put(pg)
  26. for i in range(10):#十个线程
  27. t = threading.Thread(target=download, args=(q,lck))
  28. t.start()
  29. q.join() # 等待所以任务完成
  30. print ('结束')
  31. if __name__ == '__main__':
  32. main()
  33. </code>

人气教程排行