多进程模块:Process
#from multiprocessing import Process
#os.getpid()获取的是当前进程自己的pid
#os.getppid()获取的是当前进程的父进程的pid
实例化一个进程对象
#p = Process(target=func,args=(1,))
target: 是子进程要执行的任务
args:是父进程给子进程传递的参数
进程的方法:
p.start()开启子进程,底层调用的是p.run()
#***************简单示例
from multiprocessing import Process
import time
import os
############################################开启子进程的一种方式
from multiprocessing import Process
import time
import os
def func(i):
time.sleep(1)
print("这是儿子进程,儿子自己的pid是%s.父进程的pid是%s"%(os.getpid(),os.getppid()))
if __name__=='__main__':
#实例化一个进程对象
p=Process(target=func,args=(1,))
#进程开启:原理是调用底层的p.run()
p.start()
print("这是父进程,父进程的pid是%s,父亲的父亲进程的pid是%s"%(os.getpid(),os.getppid()))
################开启多个不同的子进程
def func(i):
time.sleep(1)
print("这是儿子进程,儿子自己的pid是%s.父进程的pid是%s"%(os.getpid(),os.getppid()))
if __name__=='__main__':
#实例化一个进程对象
for i in range(2):
p=Process(target=func,args=(1,))
#进程开启:原理是调用底层的p.run()
p.start()
print("这是父进程,父进程的pid是%s,父亲的父亲进程的pid是%s"%(os.getpid(),os.getppid()))
######################################### 开启子进程的另外一种方式,以继承的方式
class Myprocess(Process): #继承Process
def __init__(self,name):
super(Myprocess,self).__init__()
self.name=name
def run(self):
print("这是以继承的方式开启子进程%s"%self.name)
if __name__=='__main__':
p=Myprocess('lin')
p.start() #实际上调用的是run方法