import multiprocessing
import os
import time
g_num = []
def dance(*args):
print("dance子进程id", os.getpid(), "dance父进程id", os.getppid())
print("dance收到的参数", args)
# for i in range(5):
# time.sleep(1)
# print("dance", i)
# 多进程,全局变量不共享
global g_num
g_num.append("dancing")
print("dance----全局参数g_num", g_num)
def sing(args1, args2):
print("sing子进程id", os.getpid(), "sing父进程id", os.getppid())
print("sing收到参数,", args1, args2)
# for i in range(5):
# time.sleep(1)
# print("sing", i)
global g_num
g_num.append("singing")
print("sing----全局参数g_num", g_num)
def eat(**kwargs):
print("eat子进程id", os.getpid(), "eat父进程id", os.getppid())
print("eat收到参数,", kwargs)
global g_num
g_num.append("eating")
print("eat----全局参数g_num", g_num)
if __name__ == "__main__":
cg_dance = multiprocessing.Process(target=dance, name='danceProcess', args=("CG", 5, 5.5))
cg_sing = multiprocessing.Process(target=sing, name='singProcess', kwargs={"args1": "CG", "args2": 5})
cg_eat = multiprocessing.Process(target=eat, name="eatProcess", kwargs={"args1": "CG", "args2": 5})
"""
为了保证子进程能够正常的运行,主进程会等待所有的子进程执行完成以后再销毁,
设置守护主进程的目的是:主进程退出,子进程销毁,避免主进程等待子进程
设置守护主进程方式:子进程对象.daemon = True start 之前执行
销毁子进程方式:子进程对象.terminate()
"""
cg_dance.daemon = True
cg_sing.daemon = True
# cg_eat.daemon = True
cg_dance.start()
cg_sing.start()
cg_eat.start()
time.sleep(0.5)
cg_eat.terminate()
# 获取当前主进程编号,获取当前进程父进程编号
print(os.getpid(), os.getppid())
print("dance进程名字", cg_dance.name)
1.进程,线程——多进程——实用于多任务
最新推荐文章于 2024-07-20 17:12:48 发布