进程的创建
进程创建方法一:
import os
ret = os.fork()
if ret > 0: //返回值大于0,说明是父进程
print("this is father")
elif ret == 0: //返回值等于0,说明是子进程
print("this is son")
else : //返回值小于0,创建失败
print("create failed")
fork()创建进程时,返回值为pid,pid==0的是子进程,子进程的pid必须返回给父进程。
在子进程退出时,父进程需要调用wait()/waitpid()来释放子进程的资源,防止僵尸进程。
主进程的退出不会影响子进程的退出,直到子进程执行完自动退出。
这种创建方式不可以跨平台,python不使用。
进程创建方法二:
from multiprocessing import Process
def test():
print("hello")
p = Process(target = test) //创建进程对象,指定执行的函数,并可以传递参数args=()。
p.start() //启动进程
p.join() //父进程会阻塞,直到子进程执行完毕。
进程创建方法三:
import os
import time
from multiprocessing import Process
class NewProcess(Process): #继承Process类创建一个新类
def __init__(self,num):
self.num = num
super().__init__()
def run(self): #重写Process类中的run方法.
while True:
print('我是进程%d,我的pid是:%d'%(self.num,os.getpid()))
time.sleep(1)
for i in range(2):
p = NewProcess(i)
p.start()
一个类继承Process,重写类中的run()方法,在执行start()时,就会执行run()
进程创建方法四:
from multiprocessing import Pool
def worker():
print("hello")
pool = Pool(3) //定义进程池的大小
pool.apply_async(target = worker) //非阻塞方式调用worker(), apply()阻塞方式调用。
pool.close() //关闭进程池,不在接收新的任务
pool.join() //等待所有子进程执行完毕,主进程退出。

浙公网安备 33010602011771号