Python之多进程一

# multiprocessing模块的Process类
# from multiprocessing import Process
# import time,os
# def func(n):
#     print("子进程" + str(n),os.getpid()) # os.getpid()获取当前进程号
#     time.sleep(1)

# 不使用多进程跑10个任务
# startTime = time.time()
# for n in range(1,11):
#     func(n)
# sec = time.time() - startTime
# print(sec) # 10.00492548942566(耗时/秒)

# 启动子进程跑10个任务
# if __name__ == "__main__":
#     p_lst = []
#     startTime = time.time()
#     for n in range(1,11):
#         # 创建一个子进程
#         p = Process(target=func,args=(n,)) # 函数参数以元组类型传入
#         p_lst.append(p)
#     for p in p_lst:p.start() # 启动创建好的进程
#     for p in p_lst:p.join() # 等待子进程结束
#     sec = time.time() - startTime
#     print(sec) # 1.4769437313079834(耗时/秒)
'''
输出结果:
子进程2 8428
子进程1 16484
子进程4 7508
子进程3 10928
子进程5 16296
子进程6 12024
子进程7 13808
子进程9 8664
子进程8 10364
子进程10 2172
1.5018908977508545
'''

# 这种方法开启多进程,进程的生命周期(通常常情况下)
# 主进程随着子进程代码执行时间短,需要等待子进程执行完毕才结束
# 子进程在自己的代码执行结束就结束

# 多进程开启方法二
# from multiprocessing import Process
# import os
# # 定义一个类,实现一个run方法(只能是run方法)
# class MyPro(Process):
#     def run(self):
#         print("子进程",os.getpid())
# if __name__ == "__main__":
#     for n in range(10):
#         p = MyPro()
#         p.start()
'''
输出结果
子进程 15332
子进程 14212
子进程 13752
子进程 10416
子进程 13372
子进程 1088
子进程 8924
子进程 8340
子进程 10016
子进程 8428
'''
# 传参数版本
# from multiprocessing import Process
# import os
# class MyPro(Process):
#     # 定义初始化方法
#     def __init__(self,msg):
#         # 先执行父类初始化方法
#         super().__init__()
#         # 定义派生属性
#         self.msg = msg
#     def run(self):
#         print(self.msg,os.getpid())
# if __name__ == "__main__":
#     for n in range(10):
#         p = MyPro("子进程" + str(n))
#         p.start()

# 进程间数据是隔离的
# from multiprocessing import Process
# import os
#
# def func():
#     global n
#     n = 0
#     print("子进程n:",n)
#
# if __name__ == "__main__":
#     n = 100
#     p = Process(target=func)
#     p.start()
#     p.join()
#     print("主进程n:",n)
'''
输出结果:主进程中n的值并没有被改变
子进程n: 0
主进程n: 100
'''

# 守护进程概念--子进程随着主进程代码的执行完毕而结束
# from multiprocessing import Process
# import os
# import time
# def func():
#     while True:
#         print("守护进程运行中")
#         time.sleep(1)
# if __name__ == "__main__":
#     p = Process(target=func)
#     p.daemon = True # 设置子进程为守护进程
#     p.start()
#     print("主进程工作中")
#     time.sleep(10)
#     print("主进程工作结束")
'''
输出结果:
主进程工作中
守护进程运行中
守护进程运行中
守护进程运行中
守护进程运行中
守护进程运行中
守护进程运行中
守护进程运行中
守护进程运行中
守护进程运行中
守护进程运行中
主进程工作结束
方法介绍:
p.is_alive() 判断子进程是否结束
p.terminate() 终止一个子进程
p.name # 进程名
p.pid # 进程ID
'''

猜你喜欢

转载自blog.csdn.net/qq_40199698/article/details/89166524