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)