multuprocessing模块创建进程

博客介绍了multuprocessing模块创建进程的步骤、模块内容,给出多进程实现代码。通过为每个进程分配函数可轻松实现多进程,能用父进程创建多个子进程,区别于fork。同时提醒,子进程拷贝父进程对象时,父子进程属性有关联;子进程单独创建对象则与父进程无关联。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  • multuprocessing模块创建进程步骤
1.需要将要执行的事情封装为函数
2.使用multiprocessing模块中Process类创建进程对象
3.通过对象属性设置和Process的初始化函数对进程进行设置,
绑定要执行的函数
4.启动进程,会自动执行进程绑定的函数
5.完成进程的回收
  • 模块内容介绍
1.Process()
	功能: 创建进程对象
	参数: name		进程名称  默认名称:Process-1
		  target	绑定函数
		  args		元组     给target函数按照位置传参
		  kwargs	字典     给target函数按键值对传参

2.p.start()
	功能: 启动进程
	* target函数会自动执行,此时进程真正被创建

3.p.join([timeout])
	功能: 阻塞等待回收子进程
	参数: 超时时间
	#join没有回收到子进程则会产生僵尸进程
	#若设置了timeout,但在时间内没有回收,便产生僵尸
* 使用multiprocessing创建子进程,同样子进程复制父进程的
全部代码段,父子进程各自执行互不影响,父子进程有各自的运行
空间。
* 如果不适用join回收子进程则子进程退出后会成为僵尸进程
  • 多进程实现代码
    将每个进程分配一个函数,可以轻松实现多进程
    可以轻松使用一个父进程创建多个子进程区别于fork
from multiprocessing import Process
from time import sleep
import os

def th1():
	sleep(3)
	print('吃饭')
	print(os.getppid(),'-----',os.getpid())

def th2():
	sleep(2)
	print('睡觉')
	print(os.getppid(),'-----',os.getpid())

def th3():
	sleep(4)
	print('打Dota')
	print(os.getppid(),'-----',os.getpid())

things = [th1,th2,th3]
process = []

for th in [th1,th2,th3]:
	p = Process(target = th)
	p.start()
	process.append(p)
	#p.join()若在这里回收将会顺序执行,不能实现多进程

#循环回收进程
for i in process:
	i.join()
  • 注意:
    1.如果子进程从父进程拷贝对象,对象和网络或文件相关联,那么父子进程会使用同一套对象属性,相互有一定的关联性
    2.如果在子进程中单独创建对象,则和父进程完全没有关联
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值