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

  • 相关阅读:
    匿名字段和内嵌结构体
    Go函数式编程的闭包和装饰器设计模式
    理解Golang中defer的使用
    Go匿名函数及闭包
    GO语言学习笔记-缓冲区Channels和线程池
    你需要知道的关于Neutron的一切事情
    []T 还是 []*T, 这是一个问题
    Golang 方法接收者为值与指针的区别
    第九章 python语法入门之与用户交互、运算符
    第八章 python语法入门之垃圾回收机制
  • 原文地址:https://www.cnblogs.com/kaibindirver/p/12698603.html
Copyright © 2011-2022 走看看