"""
multiprocessing模块创建进程
1.将需要子进程执行的事件封装成函数
2.通过模块Process类创建进程对象,关联函数
3.可以通过进程对象设置进程信息及属性
4.通过进程对象调用start启动进程
5.通过进程对象调用join回收进程
Process(target=fun,args=(1,2),kwargs={name:val},name=“测试”)
获取进程名:p.name 获取进程pid:p.pid 查看进程是否在生命周期内(p.start之前之后都可以):p.is_alive()
设置父子进程的退出关系(必须在p.start前设置):p.daemon=Ture
"""
import multiprocessing as mp
a = 1
# 时间函数
def fun(num):
for item in range(num):
print("hello world")
global a
print("child a=", a)
# 自己空间中的变量和父类中的a互不影响
a = 100
def main():
# 创建进程对象
p = mp.Process(target=fun, args=(3,), name="大刀王五")
# 守护进程,父进程退出,子进程也跟着退出
p.daemon = True
# 启动进程
p.start()
# 获取进程名
print("Name:", p.name)
# 获取子进程的pid
print("pid", p.pid)
# 查看子进程的生命状态
print("状态", p.is_alive())
# # 回收进程
p.join()
"""
相当于
pid = os.fork()
if pid == 0:
fun(3)
else:
os.wait()
"""
if __name__ == "__main__":
main()
"""
===================================================================
multiprocessing创建多进程
"""
from multiprocessing import Process
import os
def fun1():
print("吃")
print(os.getppid(), "--", os.getpid())
def fun2():
print("喝")
print(os.getppid(), "--", os.getpid())
def fun3():
print("拉")
print(os.getppid(), "--", os.getpid())
thing = [fun1, fun2, fun3]
dic = []
def proc():
for item in thing:
# 创建进程对象并关联函数
p = Process(target=item)
# 将创建的进程对象添加到列表中
dic.append(p)
# 启动进程
p.start()
for item in dic:
item.join()
if __name__ == "__main__":
proc()
python之multiprocessing模块创建进程和多进程
最新推荐文章于 2024-07-02 00:50:11 发布