我正在尝试使用多线程运行一个具有无限循环的函数(在几秒延迟后检查数据)。因为我从csv文件中读取数据,所以我也使用了队列。
当我不使用多线程/队列时,我的当前函数很好但是当我使用它们时,该函数只循环一次然后停止。
这是我的函数,它有一个无限循环。请注意,第一个while循环用于线程(如果我使用的线程数少于csv中的行数),该函数只需要第二个True循环。
q = Queue(concurrent * 2)
if __name__ == "__main__":
for i in range(concurrent):
t = Thread(target=doWork,args=(q,))
t.daemon = True
t.start()
try:
with open('products.csv','r') as f:
reader = csv.reader(f.read().splitlines())
for row in reader:
q.put((row[0],row[1]))
q.join()
except KeyboardInterrupt:
sys.exit(1)
这是我的线程驱动程序函数;
WebRequest request = WebRequest.Create("/getImage");
WebResponse response = request.GetResponse();
答案 0 :(得分:0)
对于任何面临同样问题的人,我都是如何解决它的。
我从while循环中删除了q.task_done()并将其放在while循环之外。这是按预期工作的,但我不确定这是否是正确的方法。