1.创建多线程,无参数
main.py
"""=== coding: UTF8 ==="""
# 线程类
from threading import Threadclass myThread(Thread):def run(self): # 当线程被执行的时候,被执行的就是run()for i in range(1000):print("子线程", i)"""
========================================
主函数功能测试
========================================
"""
if __name__ == '__main__':t = myThread()# t.run() # 千万不能用该方法,如果用该方法的调用,那就是单线程???t.start() # 开启线程for i in range(1000):print("主线程", i)
2.创建多线程,传参数
"""=== coding: UTF8 ==="""
# 线程类
from threading import Threadclass myThread(Thread):def __init__(self, name):super().__init__()self.name = namedef run(self): # 当线程被执行的时候,被执行的就是run()for i in range(1000):print(self.name, i)"""
========================================
主函数功能测试
========================================
"""
if __name__ == '__main__':t1 = myThread("子线程1")# t1.run() # 千万不能用该方法,如果用该方法的调用,那就是单线程???t1.start() # 开启线程t2 = myThread("子线程2")# t2.run() # 千万不能用该方法,如果用该方法的调用,那就是单线程???t2.start() # 开启线程for i in range(1000):print("主线程", i)
3.线程池
main.py
"""=== coding: UTF8 ==="""
# 线程池:一次性开辟一些线程,我们用户直接给线程池提交任务,线程任务的调度交给线程池来完成
from concurrent.futures import ThreadPoolExecutordef func(name):for i in range(1000):print(name, i)"""
========================================
主函数功能测试
========================================
"""
if __name__ == '__main__':# 创建线程池优50个线程with ThreadPoolExecutor(50) as pool:for n in range(100): # 100个任务pool.submit(func, name=f"线程{n}")# 等待线程池中的任务全部执行完毕,才能继续执行(守护)print("完毕")
关注公众号,获取更多资料