• 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

  • 相关阅读:
    网络基础
    关于actionscript中新建一个sprite,设置大小(宽高)的问题。
    Android SDK无法更新问题解决 ---- 还可解决无法上google的问题
    android apk简单反编译
    Flash的坑之ExternalInterface.call只返回null值的解决办法
    Flash Socket简单调试工具
    进制转换 正进制
    Codeforces Div3 #498 A-F
    UVa10082
    div与div之间的拖拽
  • 原文地址:https://www.cnblogs.com/kaibindirver/p/12698603.html
Copyright © 2020-2023  润新知