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)
    

      

  • 相关阅读:
    experiment 2
    experiment 5
    php 代码审计之变量覆盖
    experiment 4
    experiment 3
    experiment 1
    2018铁三测评WP
    Lesson 1
    实验四、决策树算法及应用
    实验三 朴素贝叶斯算法及应用
  • 原文地址:https://www.cnblogs.com/frank-shen/p/10276666.html
Copyright © 2011-2022 走看看