python等待子线程结束_python 多线程 thread (控制主线程跑完,子线程也关闭) 和 (等待子线程跑完,主线程才关闭)...

import thread

from time import sleep, ctime

loops = [4,2]

def loop0():

print 'start loop 0 at:', ctime()

sleep(4)

print 'loop 0 done at:', ctime()

def loop1():

print 'start loop 1 at:', ctime()

sleep(2)

print 'loop 1 done at:', ctime()

def main():

print 'start:', ctime()

a=thread.start_new_thread(loop0, ())

thread.start_new_thread(loop1, ())

sleep(6)

print 'all end:', ctime()

if __name__ == '__main__':

main()

说明:

start_new_thread()要求一定要有前两个参数。所以,就算我们想要运行的函数不要参数,我们也 要传一个空的元组。

当脚本启动,实际就是启动了一个主线程,当主线程跑完,子线程也会随之关闭(无乱是否执行完)

主线程和子线程是同时执行的

我们可以把sleep(6)的位置改成去外部txt文件 查询值,当值为1 那么主线程跑完,子线程也随之的关闭掉

后记: 子线程都执行完了,主线程才关闭 的写法

#coding=utf-8

import thread

from time import sleep,ctime

def loop(nloop,lock):

print 'start loop', nloop, 'at:', ctime()

sleep(1)

print 'loop', nloop, 'done at:', ctime()

#解锁

lock.release()

def main():

print 'starting at:', ctime()

locks =[]

#创建2个带锁的对象

for i in range(2):

# 返回一个新的锁定对象,创建一个锁的列表

lock = thread.allocate_lock()

# 一个原始的锁有两种状态,锁定与解锁,分别对应 acquire()和 release() 方法。

#锁定

lock.acquire()

#追加到 locks[]数组中 ,放到锁列表 locks中

locks.append(lock)

#执行多线程(创建2条线程并带上锁)

for i in range(2):

thread.start_new_thread(loop,(i,locks[i]))

#循环监控,这2条带锁的线程,是否解锁,都解锁了 主线程就退出,脚本执行完毕

for i in range(2):

while locks[i].locked():

pass

print 'all end:', ctime()

if __name__ == '__main__':

main()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值