美文网首页
Python多线程-thread.start_new_threa

Python多线程-thread.start_new_threa

作者: Liuzz25 | 来源:发表于2019-08-15 17:14 被阅读0次

    在使用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_threa

          本文链接:https://www.haomeiwen.com/subject/mrpzjctx.html