多进程

多进程是操作系统的资源分配的基本单位。
举例:单核CPU可运行一个进程,如果运行多个进程的话,会按顺序运行。并发
双核CPU,可运行两个进程,进程会同时运行。并行属于真正意义上的多线程一起执行
多进程需要需要导入一个包

import multiprocessing

获取子进程的PID

import os
os.getpid

获取父进程的PID

import os
os.getppid

获取当前进程的进程对象和进程名

mp = multiprocessing.current_process()
print(mp)

t = multiprocessing.Process(target = test, name = ‘test’)
t.start()

多进程传参操作

#使用args以元组的形式传参
def test(a):
for i in range(a):
print('A – ’ , i )

if name = ‘main’:
t = multiprocessing.Process(target = test,args = (5,))
t.start()

#使用kwargs以字典的形式传参
def test(a):
for i in range(a):
print('A – ’ , i )

if name = ‘main’:
t = multiprocessing.Process(target = test,kwargs = {‘a’ : 5})
t.start()

多进程注意事项
1.多进程不共享全局变量

list = []
def test():
for i in range(5):
list.append(i)
print(list)

def tast():
print(list)

if name = ‘main’:
t1 = multiprocessing.Process(target = test)
t2 = multiprocessing.Process(target = test)
t1.start()
t2.start()

2.守护进程(在主进程借宿之前结束子进程)

#方法一手动销毁
def t1():
for i in range(5):
print(i )

if name = ‘main’:
t1 = mulitiprocessing.Process(target = t1, name = ‘t1’)

  t.start()
  t.terminate()

#方法二守护进程
def t1():
for i in range(5):
print(i )

if name = ‘main’:
t1 = mulitiprocessing.Process(target = t1, name = ‘t1’)

  t.daemon = True
  t.start()

进程执行代码

#导入包
import mulitiprocessing
import time
import os
#设置进程函数
def t1(a):
#获取当前进程对象
mp = mulitiprocess.current_process()
print(mp)
#获取子进程的PID和父进程的PID
print(‘子进程的PID是{},父进程的PID是{}’.format(os.getpid(),os.getppide())
for i in range(a):
print(‘A – ‘,i)
def t2(a,b):
#获取当前进程对象
mp = mulitiprocess.current_process()
print(mp)
#获取子进程的PID和父进程的PID
print(‘子进程的PID是{},父进程的PID是{}’.format(os.getpid(),os.getppide())
for i in range(b):
print(a,’–’,i)
if name = ‘main’:
mp = mulitiprocess()
print(mp)
print(mp.name)
t1 = mulitiprocess.Process(target = t1,name = ‘t1’ , args = (5,))
t1 = mulitiprocess.Process(target = t1,name = ‘t1’ , kwargs = {‘a’:5})
t2 = mulitiprocess.Process(target = t2,name = ‘t2’ ,args = (‘B’,5))
t2 = mulitiprocess.Process(target = t2,name = ‘t2’ ,kwargs ={‘a’:B,‘b’:5})
#守护进程
t1.daemon = True
t2.daemon = True
t1.start()
t2.start()
#手动销毁进程
t1.terminate()
t2.terminate()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值