python 多线程

defmain():nloops=randint(2,11)q=Queue(32)threads=[]foriinnfuncs:t=MyThread(funcs[i],(... 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了一个线程之后,是不是就阻塞了?循环就停止了?
展开
 我来答
Gerald_Bond
2011-04-25 · TA获得超过1003个赞
知道小有建树答主
回答量:590
采纳率:0%
帮助的人:606万
展开全部
join是阻塞主线程,主线程到这会停下来,等所有子线程退出后才继续往下执行。
因为默认情况下,主线程一旦退出,程序就终止了,为了保证其它线程完成任务,就必须阻塞主线程,等其它线程都完成了再进行下一步。
追问
如果主进程暂停了,那那个循环也就暂停了,那么之后的thread就没办法join了,直到第一个thread结束才行,对吗?
追答
是的,但是这个时候所有的进程都已经在进行了,只是主进程在暂停而已。
join只是等待而已,不影响start。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式