Python程序陷入僵局

时间:2017-08-18 15:18:02

标签: python multithreading python-3.x deadlock

我的程序在工作了大约半小时后陷入僵局。我使用全局线程安全队列usernamesQueue = Queue(),主线程生成要排队的项目并等待处理它们:

while(True):
    print('processing file...')  

    with open('usernames') as f:
        for line in f:
            usernamesQueue.put(line.strip())

    usernamesQueue.join()

我开始这样的另一个主题:

for i in range(NUMBER_OF_WORKERS):
    threading.Thread(target=worker).start()

并像这样处理队列中的值:

def worker():
    while True:
        time.sleep(1)

        item = None

        item = usernamesQueue.get()

        if item is not None:
            processUser(item)

            usernamesQueue.task_done()
            time.sleep(random.randint(1, 5))

processUser捕获任何可以抛出的异常,并确保在死锁之前没有异常。怎么了?

1 个答案:

答案 0 :(得分:0)

死锁没有问题,它在HTTPSConnection中,默认情况下没有超时或非常大,我添加超时15秒,程序工作正常,即使服务器不想响应。