zoukankan      html  css  js  c++  java
  • Python 实现多线程的几种方式

    threading.Thread 模块  

    继承实现:

    import threading
    import time
    
    
    class TestThread(threading.Thread):
        def __init__(self, name):
            super(TestThread, self).__init__()
            self.name = name
    
        def run(self):
            print('线程%s 开始' % self.name)
            time.sleep(5)
            print('线程%s 结束' % self.name)
    
    
    def main():
        threads = []
        thread_name = ['1', '2', '3']
        for name in thread_name:
            t = TestThread(name)
            threads.append(t)
        for thread in threads:
            thread.start()      # 启动线程
        for thread in threads:
            thread.join()       # 阻塞主线程
    
    
    if __name__ == '__main__':
        main()
    

    函数实现: 

    import threading
    import time
    
    
    def main(name):
        print('线程%s 开始' % name)
        time.sleep(5)
        print('线程%s 结束' % name)
    
    
    if __name__ == '__main__':
        threads = []
        thread_name = ['1', '2', '3']
        for name in thread_name:
            t = threading.Thread(target=main, args=(name,))
            t.start()
            threads.append(t)
        for thread in threads:
            thread.join()
    

    concurrent.futures 模块

    线程池:

    import time
    from concurrent.futures import ThreadPoolExecutor
    
    
    def main(name):
        print('线程%s 开始' % name)
        time.sleep(5)
        print('线程%s 结束' % name)
    
    
    if __name__ == '__main__':
        thread_name = ['1', '2', '3']
        with ThreadPoolExecutor(4) as executor:
            executor.map(main, thread_name)
    

      

  • 相关阅读:
    java类,接口浅谈
    人月神话阅读笔记01
    学习进度条14
    学习进度条13
    每日站立会议10(完结)
    每日站立会议09
    每日站立会议08
    构建之法阅读笔记06(完)
    每日站立会议07
    每日站立会议06
  • 原文地址:https://www.cnblogs.com/frank-shen/p/10276666.html
Copyright © 2011-2022 走看看