python的multiprocessing模块

python的multiprocessing模块

'''
multiprocessing模块创建进程
1.编写子进程执行函数
2.创建进程对象
3.启动进程
4.回收进程
'''
import multiprocessing as mp
from time import sleep

#全局变量,子进程完全copy父进程空间代码段,也能使用
a = 1

#子进程函数
def fun():
	print('开始一个进程')
	sleep(3)
	
	#声明使用全局变量a
	global a
	print('a:',a)
	#在函数内部修改全局变量a
	a = 10000
	
	print('进程结束')

#创建进程对象
p = mp.Process(target=fun)

#启动进程(此时子进程才真正创建)
p .start()

#回收进程
p.join()

print('a = ',a)	#打印结果 a = 1,因为子进程只执行子进程函数部分,这部分由父进程执行,
		#且父进程和子进程代码空间相互独立,子进程修改全局变量不影响父进程中变量

tips:
这是python自己封装的进程模块,可在各个操作系统下使用(可移植性好)
在这个方法中,所有的事情可以分配给各个子进程去做,父进程专门用于创建子进程和回收子进程

import multiprocessing as mp
from time import sleep
import os

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

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

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

#存放所有子进程函数
thing = [th1,th2,th3]

#存储进程对象
jobs = []
for th in things:
	p = Process(target=th)
	#因为join()不能写在for循环内部(会造成每个进程的阻塞),需通过容器存放到外边单独回收
	jobs.append(p)
	#同时创建多个子进程并执行,子进程的执行完全看谁先抢占到时间片,
	#他们打印出的os.getppi()相同(他们拥有相同父进程)
	p.start()

#回收子进程
for i in jobs:
	i.join()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值