python实现多线程
threading.Thread 模块
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | 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() |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | 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 模块
线程池:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | 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) |
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步