Python多进程编程

Python多任务提升程序性能之一---------多进程

#Python的多进程编程的方法是multiprocessing,他是可以在当前的主进程下面去创建n个子进程所以所以他,执行相当于n+1个进程
#首先导入multimprocessing包
import multiprocessing
#防止执行熟读太快看出出多进程的区别
import time
#编写尊卑使用多进程的方法
def test01():
	for i in range(10):
		print("A")
		time.sleep(0.5)
def test02():
	for i in range(10):
		print("B")
		time.sleep(0.5)
if __name__ == "__main__":
#创建线程
	P1 = multiprocessing.Process(target = test01)
	P2 = multiprocessing.Process(target = test02)
#启动线程
	P1.start()
	P2.start()

这里我们可以搭配os的方法去获取我们的进程变化查看当前的进程号

import multimprocessing
#防止执行熟读太快看出出多进程的区别
import time
#用来获取进程号
import os
#编写尊卑使用多进程的方法
def test01():
	print(f"当前进程号为{os.getpid()},当前进程的父进程号为{os.getppid()}")
	for i in range(10):
		print("A")
		time.sleep(0.5)
def test02():
	print(f"当前进程号为{os.getpid()},当前进程的父进程号为{os.getppid()}")
	for i in range(10):
		print("B")
		time.sleep(0.5)
if __name__ == "__main__":
#获取当前的主进程号和他的父进程号
	print(f"当前的主进程号为{os.getpid()},当前的父进程号为{os.getppid()}")
#创建线程
	P1 = multimprocessing.Process(target = test01)
	P2 = multimprocessing.Process(target = test02)
#启动线程
	P1.start()
	P2.start()

这里因为我们的主进程会等待子进程结束后才会去关闭主进程,那么这里就有守护进程的概念,一共有两种方法,一在进程启动前去添加守护进程,一个是在启动后手动结束进程的方法

#首先导入multimprocessing包
import multiprocessing
#防止执行熟读太快看出出多进程的区别
import time
#编写尊卑使用多进程的方法
def test01():
	for i in range(10):
		print("A")
		time.sleep(0.5)
def test02():
	for i in range(10):
		print("B")
		time.sleep(0.5)
if __name__ == "__main__":
#创建线程
	P1 = multiprocessing.Process(target = test01)
	P2 = multiprocessing.Process(target = test02)
#添加守护进程,守护进程不许要进程没有启动前去进程添加
	P1.daemo = True
	P2.daemo = True
#启动线程
	P1.start()
	P2.start()
#添加手动结束进程
	#P1.terminate()
	#P1.terminate()

那么问题来了我们多进程运行函数的时候没有带括号那么我们的参数如何传入呢,不要着急接着看
请上我们的老演员代码

import multiprocessing
#防止执行熟读太快看出出多进程的区别
import time
#编写尊卑使用多进程的方法
def test01(A):
	for i in range(10):
	#这里我们将A设计成为形参
		print(A)
		time.sleep(0.5)
def test02(B):
	for i in range(10):
	#这里我们将B设计成为形参
		print(B)
		time.sleep(0.5)
if __name__ == "__main__":
#创建线程
#这里因为我们函数要得是寻找到对应函数而不是调用所以我们没有带上号口号,那么显然我们传参数就有固定方法,一种是一元组的方式传入,一种是字典的形式传入
#元组传法
	P1 = multiprocessing.Process(target = test01,args = (10,))
#字典传法
	P2 = multiprocessing.Process(target = test02,kwargs = {"B" : 10})
#这里就和我们的普通函数传参非常像,一种按照顺序传参,一种打乱顺序但是带上参数名称传参
#启动线程
	P1.start()
	P2.start()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值