我开始研究Python中的创建线程。我首先做了一些理论搜索,以了解Threads如何在Python中工作。我还继续阅读有关在Python中使用Queue以及它如何帮助解决琐碎的线程问题的内容。我能够理解每个的单独代码。然后我遇到了以下教程:
http://www.ibm.com/developerworks/aix/library/au-threadingpython/
它显示了Python中Thread和Queue的相关性,以及它在某些情况下如何加速执行过程。
我很难理解代码的某些方面
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()
与此计划的相关用途是什么?
答案 0 :(得分:1)
"在第一个for循环中,创建了多个线程,并将一个队列实例传递给它。但据我所知,目前队列是空的。"
是的,线程已经启动,但他们还没有工作要做。
for host in hosts:
"主机值被推入队列。现在,如何将此队列数据分配给线程?"
由队列实例
" queue.join()
与此计划的相关用途是什么?"
join
会导致程序等待,直到线程完成所有处理并且队列实例收集它们的输出。此程序将在此时阻止,直到队列完成。