我有一个脚本,该脚本通过使用请求接收温度数据。由于必须进行多个请求(大约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。
答案 0 :(得分:0)
.join()
函数在继续下一行之前等待所有线程加入