2016-02-09 6 views
0

В Python, в чем разница между использованием thread.join и queue.join? Я чувствую, что он может выполнять одну и ту же работу в некоторых сценариях. Особенно, если есть некоторая корреспондированность между созданной нитью и элементом, выбранным из очереди для задания. Это что-то вроде, если вы собираетесь использовать Threading на queue, лучше всего зависеть от queue.join, и если вы просто что-то делаете в паралели, где нет используемой структуры данных queue, но что-то вроде list вы можете использовать thread.join ? Конечно, в сценарии thread.join вам нужно указать все порожденные темы.В чем основное отличие thread.join vs. queue.join?

Также как в стороне queue что-то, что вы обычно используете для потребления входных данных? Я думаю, что в сценарии привязки входных данных для другого задания имеет смысл использовать в качестве вывода также, но в общем очередь для обработки ввода? Может кто-нибудь уточнить?

ответ

1

Queue.join будет ожидать, что очередь будет пустой (на самом деле, для каждого элемента после обработки вызывается Queue.task_done). Thread.join будет блокироваться до тех пор, пока все потоки не прекратятся. Поведение с использованием того или другого может быть похоже, если все потоки берут элементы из очереди, выполняют задачу и возвращаются, когда ничего не остается. Однако вы все равно можете иметь потоки, которые вообще не используют очередь, поэтому Queue.join будет бесполезным.

Смежные вопросы