使用多线程和队列时,无限循环自动退出

时间:2016-10-08 21:41:12

标签: python multithreading

我正在尝试使用多线程运行一个具有无限循环的函数(在几秒延迟后检查数据)。因为我从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(); 

1 个答案:

答案 0 :(得分:0)

对于任何面临同样问题的人,我都是如何解决它的。

我从while循环中删除了q.task_done()并将其放在while循环之外。这是按预期工作的,但我不确定这是否是正确的方法。