• 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)
    

      

  • 相关阅读:
    高可用keepalived的抢占式与非抢占式
    keepalived搭建
    高可用概念
    Nginx优雅显示错误页面
    Nginx调整上传文件大小
    nginx的root和alias区别
    nginx的include
    每日总结2.18
    每日总结2.17
    每日总结2.16
  • 原文地址:https://www.cnblogs.com/frank-shen/p/10276666.html
Copyright © 2020-2023  润新知