python开发之thread线程基础实例入门

1233次阅读  |  发布于5年以前

本文实例讲述了python开发之thread线程基础。分享给大家供大家参考,具体如下:

说到线程,我们要知道啥是串行,啥是并行程序

举个例子:

串行程序,就是一个一个的执行程序


    #python threading
    import time
    '''
      每一秒中,输出:this is a demo!
    '''
    def serial():
      '''串行输出'''
      time.sleep(1)
      print('this is a demo!')
    def main():
      for i in range(5):
        serial()
    if __name__ == '__main__':
      main()

运行结果如下:


    >>> 
    this is a demo!
    this is a demo!
    this is a demo!
    this is a demo!
    this is a demo!
    >>>

并行程序,就是很多个程序在同一时间(宏观)一起执行


    #python threading
    import threading
    import time
    '''
      并行执行,输出:Good!Good!Good!Good!Good!
    '''
    def parallel():
      '''并行输出'''
      time.sleep(1)
      print('Good!')
    def main():
      for i in range(5):
        t = threading.Thread(target=parallel)
        t.start()
    if __name__ == '__main__':
      main()

当然我们通过执行程序,可以知道,并行程序要比串行程序执行的要快....

我们也可以获取到当前的线程及个数:


    #python threading
    import threading
    import time
    '''
      并行执行,输出:
      [<Thread(Thread-2, started 3480)>, <Thread(Thread-1, started 660)>,
      <Thread(SockThread, started daemon 2920)>, <Thread(Thread-3, started 916)>,
      <Thread(Thread-4, started 3476)>, <_MainThread(MainThread, started 3964)>,
      <Thread(Thread-5, started 2060)>]
      存在的线程数 : 7
      Good!Good!Good!Good!Good!
    '''
    def parallel():
      '''并行输出'''
      time.sleep(1)
      print('Good!')
    def main():
      for i in range(5):
        t = threading.Thread(target=parallel)
        t.start()
    if __name__ == '__main__':
      main()
      print(threading.enumerate())
      print('存在的线程数 : %d'%threading.active_count())

运行结果如下:


    >>> 
    [<Thread(SockThread, started daemon 15424)>, <Thread(Thread-3, started 15840)>, <Thread(Thread-1, started 10884)>, <Thread(Thread-2, started 14512)>, <Thread(Thread-4, started 13204)>, <_MainThread(MainThread, started 12924)>, <Thread(Thread-5, started 15476)>]
    存在的线程数 : 7
    >>> Good!Good!Good!Good!Good!

希望本文所述对大家Python程序设计有所帮助。

Copyright© 2013-2020

All Rights Reserved 京ICP备2023019179号-8