python 多线程

def main():
nloops=randint(2,11)
q=Queue(32)

threads=[]
for i in nfuncs:
t=MyThread(funcs[i],(q,nloops),funcs[i].__name__)
threads.append(t)

for i in nfuncs:
threads[i].start()

for i in nfuncs:
threads[i].join()

print >>log,'all DONE'
print 'all DONE'

main函数最后一个循环不是很懂。当join了一个线程之后,是不是就阻塞了?循环就停止了?

join是阻塞主线程,主线程到这会停下来,等所有子线程退出后才继续往下执行。
因为默认情况下,主线程一旦退出,程序就终止了,为了保证其它线程完成任务,就必须阻塞主线程,等其它线程都完成了再进行下一步。追问

如果主进程暂停了,那那个循环也就暂停了,那么之后的thread就没办法join了,直到第一个thread结束才行,对吗?

追答

是的,但是这个时候所有的进程都已经在进行了,只是主进程在暂停而已。
join只是等待而已,不影响start。

温馨提示:答案为网友推荐,仅供参考
相似回答