zoukankan      html  css  js  c++  java
  • python threading 无法并行问题

    代码如下:

    for _i in range(8):
        t = threading.Thread(target=main,args=(clienLog,))
        t.setDaemon(True)
        t.start()
        t.join()

    这是因为对join理解有偏差的原因导致的,join ()方法:主线程A中,创建了子线程B,并且在主线程A中调用了B.join(),那么,主线程A会在调用的地方等待,直到子线程B完成操作后,才可以接着往下执行,那么在调用这个线程时可以使用被调用线程的join方法

    因此启动第一线程后会在主线程中等待第一个线程完成才会往后执行,这样的话这个多线程就变成了单线程

    应该写成

    ts = []
    for _i in range(8):
        t = threading.Thread(target=main,args=(clienLog,))
        ts.append(t)
        t.setDaemon(True)
        t.start()
    for t in ts:
        t.join()
        

    如果线程中有while Ture的循环的时候无法ctrl+c退出程序,

    可以写成下面这样:

        try:
            for _i in range(8):
                t = threading.Thread(target=main,args=(clienLog,))
                t.setDaemon(True)
                t.start()
                #t.join()
            while True:
                time.sleep(5)
        except KeyboardInterrupt:
            print('quit')

    也可以将两者结合,没有对比sleep和join哪个性能更优

  • 相关阅读:
    java_day12_jdk1.8新特性
    IT修养-基础篇
    selenium之 chromedriver与chrome版本映射表(更新至v2.31)
    selenium--定位--CSS
    敏捷测试--之scrum--原理
    敏捷测试和瀑布测试的关联
    bugfree安装
    Linux
    mysql--命令行创建数据库
    软件测试流程
  • 原文地址:https://www.cnblogs.com/leescre/p/10147355.html
Copyright © 2011-2022 走看看