一个线程需要多长时间才能让其他线程有足够的时间从队列中获取?

时间:2018-01-18 11:14:39

标签: python multithreading python-3.x

from time import sleep
from threading import Thread
from threading import get_ident
from queue import *

_urls = Queue()

class URLParser(Thread):

    def run(self):
        global _urls
        while _urls.qsize() > 0:
            url = archive_urls.get()
            _urls.task_done()
            # .... Omitted some code here where I do some work on the url, for brevity
            print(str(get_ident()) + ' consumed:' + url + ' qsize:' + str(_urls.qsize()))
            sleep(0.002)

我的线程应该休眠多久,以便其他线程可以从队列中消耗?我不想指定一个太大的数字,因为那时我可能会浪费时间,或者太小而错过了所有消费线程的好处......

1 个答案:

答案 0 :(得分:4)

不必在你的工作线程中睡觉。有时在示例中已经完成了可视化多线程程序的流程,但是你没有理由在生产代码中这样做。

当一个线程完成任务时,它也可以立即接受下一个任务。它不会让你的程序更快,而另一个线程则代之以完成任务。你唯一能做的就是工作线程时不时地闲着。