在使用python多线程的时候,踩到了主线程未等待多线程进程运行完成就结束,导致多线程无效的坑。后来想到自己写个全局变量监控多线程是否全部完成。话不多说,上代码。
def test(i):
global unfinished_thread
print '开始运行第%s个进程'%i
time.sleep(i)
lock.acquire()
unfinished_thread -= 1
print '结束运行第%s个进程'%i
lock.release()
# 测试入口
if __name__ == '__main__':
unfinished_thread = 0
# 创建线程锁,用于判断线程是否全部完成
lock = Lock()
start_time = time.time()
for i in range(1, 4, 1):
try:
# 多线程多分类同时运行
unfinished_thread += 1
thread.start_new_thread(test, (i,))
except:
print "Error: unable to start thread" + str(i)
while True:
# 等待所有线程完成
lock.acquire()
if unfinished_thread != 0:
lock.release()
time.sleep(1)
print'多线程未结束,休眠1s,剩余线程数量:%s' % unfinished_thread
else:
lock.release()
break
print '运行完毕,耗时%s秒' % (time.time() - start_time)
- unfinished_thread 为全局变量 ,用于记录未完成线程数。
其他的,代码注释已经写了,就不多哔哔啦~
运行结果如下:
运行结果
网友评论