zoukankan      html  css  js  c++  java
  • 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()

    另外一种 https://www.cnblogs.com/kaibindirver/p/11432880.html

    补充 https://www.cnblogs.com/kaibindirver/p/12717924.html

  • 相关阅读:
    vmware ubuntu 异常关机无法连接到网络
    Speed up GCC link
    常用的一些解压命令
    Log4j 漏洞复现
    Test Case Design method Boundary value analysis and Equivalence partitioning
    CCA (Citrix Certified Administrator) exam of “Implementing Citrix XenDesktop 4”
    What is Key Word driven Testing?
    SAP AGS面试小结
    腾讯2013终端实习生一面
    指针的引用
  • 原文地址:https://www.cnblogs.com/kaibindirver/p/12698603.html
Copyright © 2011-2022 走看看