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)