Вы просто не можете очистить очередь, потому что к каждому путу также добавляется элемент unfinished_tasks.Метод соединения зависит от этого значения.И all_tasks_done также должен быть уведомлен.
q.mutex.acquire()
q.queue.clear()
q.all_tasks_done.notify_all()
q.unfinished_tasks = 0
q.mutex.release()
или прилично, используйте пары get и task_done для безопасного удаления задач.
while not q.empty():
try:
q.get(False)
except Empty:
continue
q.task_done()
или просто создайте новую очередь и удалитестарый.