程序完成后线程不会关闭

时间:2019-09-10 20:38:17

标签: python-3.x python-multithreading

我有一个脚本,该脚本通过使用请求接收温度数据。由于必须进行多个请求(大约13000个),因此我决定探索新线程的使用。

程序通过从csv文件中获取经度/纬度数据,然后发出检索温度数据的请求来工作。

我面临的问题是,当检索到最后一个温度值时,脚本无法完全完成。

这是代码。我已经缩短了,所以很容易看到我在做什么:

num_threads = 16
q = Queue(maxsize=0)

def get_temp(q):
    while not q.empty():
        work = q.get()
        if work is None:
            break
         ## rest of my code here  
    q.task_done()

主要:

def main():

    for o in range(num_threads):
        logging.debug('Starting Thread %s', o)
        worker = threading.Thread(target=get_temp, args=(q,))
        worker.setDaemon(True)
        worker.start()

    logging.info("Main Thread Waiting")
    q.join()

    logging.info("Job complete!")

我在控制台上看不到任何错误,并且温度已成功写入另一个文件。我试过运行只有几个经度/纬度引用的测试csv文件,并且脚本似乎可以正常执行。

那么,有什么办法可以减轻背景中可能发生的事情的影响吗?我在Linux Mint 19.1上的PyCharm 2019.1上使用Python 3.7.3。

1 个答案:

答案 0 :(得分:0)

.join()函数在继续下一行之前等待所有线程加入