多进程与多线程:
一个进程中至少有一个线程。
程序执行时,程序本身就是一个线程,成为主线程。
手动创建的线程,称为是子线程。
主线程执行中不会等待子线程执行完毕,会直接执行后面的代码。
多进程执行过程中需要进行多进程切换,多进程切换消耗的CPU资源较多。
多进程:
# 多进程:一个程序运行过程中,产生了多个进程
# n个正在运行的程序----至少n个进程
# 1个程序-----可能只有一个进程,也可能有多个进程
#引入进程类
from multiprocessing import Process
import time
#任务1
def run1():
print("执行了任务1!")
time.sleep(5)
#任务2
def run2():
print("执行了任务2!")
time.sleep(5)
#任务3
def run3():
print("执行了任务3!")
time.sleep(5)
#--------------------串行
# run1()
# run2()
# run3()
#--------------------并行
#创建进程对象
p1=Process(target=run1) #(target=要执行的任务方法)
p2=Process(target=run2)
p3=Process(target=run3)
if __name__ == '__main__':
p1.start() #启动进程,只能写道main中
p2.start()
p3.start()
多线程:
import threading
import time
def run(name):
time.sleep(5)
print(name,"执行了任务!")
#程序执行时,程序本身就是一个线程,称为主线程
#手动创建的线程,称为子线程
#主线程执行中不会等待子线程执行完毕,会直接执行后面代码
#创建线程对象
t1=threading.Thread(target=run,args=("t1",))
t2=threading.Thread(target=run,args=("t2",))
t3=threading.Thread(target=run,args=("t3",))
#启动线程
t1.start()
t2.start()
t3.start()
t1.join() #需要等待当前线程执行完毕,才能继续执行主线程
t2.join()
t3.join()
print("执行完毕!")