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)