Я начал изучать создание потоков в Python. Сначала я провел некоторый теоретический поиск, чтобы понять, как работают потоки в Python. Я также прочитал об использовании очереди в Python и о том, как она может помочь в решении тривиальных проблем с потоками. Я смог понять отдельные коды для каждого. Затем я наткнулся на следующий учебник:
http://www.ibm.com/developerworks/aix/library/au-threadingpython/
Он показывает актуальность Thread и Queue в Python и то, как они могут ускорить процесс выполнения при определенных обстоятельствах.
Мне трудно понять некоторые области кода
def main():
#spawn a pool of threads, and pass them queue instance
for i in range(5):
t = ThreadUrl(queue)
t.setDaemon(True)
t.start()
#populate queue with data
for host in hosts:
queue.put(host)
#wait on the queue until everything has been processed
queue.join()
main()
print "Elapsed Time: %s" % (time.time() - start)
В первом цикле for создается несколько потоков, и им передается экземпляр очереди. Но, насколько я понимаю, на данный момент очередь пуста.
В следующем цикле for
for host in hosts
:
Значения хоста помещаются в очередь. Теперь, как эти данные очереди назначаются потокам?
Наконец, какая польза от queue.join()
в отношении этой программы?