我的程序在工作了大约半小时后陷入僵局。我使用全局线程安全队列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捕获任何可以抛出的异常,并确保在死锁之前没有异常。怎么了?
答案 0 :(得分:0)
死锁没有问题,它在HTTPSConnection中,默认情况下没有超时或非常大,我添加超时15秒,程序工作正常,即使服务器不想响应。