32
进程的pid, 父进程ppid,开启进程的方式,进程的空间隔离验证, join方法,,守护进程
进程的pid与父进程的ppid
查看进程号:1终端查看tasklist
2本文件查看 import os print(os.getpid())
查看父进程:print(os.getppid())
创建进程的方法:
from multiprocessing import Process
a=1
b=2
def task(n):
print('子进程开始....') 在windows中Process()必须放到# if __name__ == '__main__':下
if __name__=='__main__':
# p=Process(target=task,args=(1,)) #p就是一个进程对象
p = Process(target=task, kwargs={'n':1}) #p就是一个进程对象
p.start()#给操作系统发送一个请求
print('主进程开始')
# p = Process(target=task, kwargs={'n': 1})创建一个进程对象,将进程的代码放进对象中
# 首先p.start会给操作系统发送一个请求,操作系统得到命令,然后执行p进程对象的代码( 会赋值一份到子进程 ),这个过程会有时间消耗
# print('主进程开始') 主进程开始和子进程开始,谁先到内存被cpu执行,谁先运行
target表示调用对象,即子进程要执行的任务 args表示调用对象的位置参数元组,args=(1,2,'egon',) kwargs表示调用对象的字典,kwargs={'name':'egon','age':18} name为子进程的名称args指定的为传给target函数的位置参数,是一个元组形式,必须有逗号
验证进程间的内存隔离
from multiprocessing import Process
import time
x=1000
def task():
time.sleep(3)
global x
x=2
print('子进程',x)
if __name__=='__main__':
p=Process(target=task,)
p.start()
time.sleep(5)
print('主进程',x)
要求:主进程要在子进程结束后再运行,join方法 p.join()通知p子进程结束之后再执行主进程,要利用for循环
多个进程使用join,他们之间互不影响
p.join()会将除join方法意外的方法视为主进程的方法
进程对象的其他参数
守护进程:子进程守护主进程