Python多线程-thread.start_new_thread简单使用

在使用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 为全局变量 ,用于记录未完成线程数。
    其他的,代码注释已经写了,就不多哔哔啦~

运行结果如下:


运行结果

你可能感兴趣的:(Python多线程-thread.start_new_thread简单使用)