哪里有制作网站,网站排名推广工具,企业咨询属于什么行业,柳州建设网经济适用房进程是资源单位, 线程是执行单位。
每一个进程至少要有一个线程#xff0c;启动每一个程序默认都会有一个主线程
1.多线程的两种实现
from threading import Thread#方法一
def func(name):for i in range(10):print(name, i)if __name__ __main__:t Thread(targetfunc, …进程是资源单位, 线程是执行单位。
每一个进程至少要有一个线程启动每一个程序默认都会有一个主线程
1.多线程的两种实现
from threading import Thread#方法一
def func(name):for i in range(10):print(name, i)if __name__ __main__:t Thread(targetfunc, args(jerry,)) # 创建线程并给线程安排任务#参数必须是元组且最后一个参数后面的逗号不能忘t.start() # 多线程状态为可以开始工作状态, 具体的执行时间由CPU决定for i in range(10):print(main, i)#方法二
class MyThread(Thread): #创建一个类MyThread继承父类Thread#可以使用构造函数def __init__(self) 传递参数def run(self): # 固定的 - 当线程被执行的时候, 被执行的就是run()for i in range(1000):print(子线程, i)if __name__ __main__:t MyThread()# t.run() # 不能用t.run() 调用了类中的run()方法为单线程t.start() # 开启线程for i in range(1000):print(主线程, i) 2.多进程的两种实现
与多线程的实现方法基本一样
from multiprocessing import Processdef func():for i in range(1000):print(子进程, i)if __name__ __main__:p Process(targetfunc)p.start()for i in range(1000):print(主进程, i)3.进程池线程池
# 线程池: 一次性开辟一些线程. 我们用户直接给线程池子提交任务. 线程任务的调度交给线程池来完成
from concurrent.futures import ThreadPoolExecutor, ProcessPoolExecutordef fn(name):for i in range(1000):print(name, i)if __name__ __main__:# 创建50个线程池with ThreadPoolExecutor(50) as t:for i in range(100):t.submit(fn, namef线程{i})# 等待线程池中的任务全部执行完毕. 才继续执行(守护)print(123)