方法1
先输出主进程,再输出子进程是因为 p.start() 只是给系统发送就绪信号有延时,所以主进程都执行完了,可能子进程才到他开始运行
from multiprocessing import Process # 创建进程的模块
def task(name):
print(name)
if __name__ == '__main__':
# 开启子进程 参数1:方法名(不要带括号) 参数2:参数(元祖) 返回对象
p = Process(target=task, args=('子进程1',))
p.start() # 只是给操作系统发送了一个就绪信号,并不是执行。操作系统接收信号后安排cpu运行
print('主进程')
# 输出:主进程--> 子进程
方法2 - 类的方法
from multiprocessing import Process # 创建进程的模块
class MyProcess(Process):
def __init__(self, name):
super().__init__()
self.name = name
def run(self): # 固定名字run !!!必须用固定名
print(self.name)
if __name__ == '__main__': # 必须要这样启动
p = MyProcess('子进程1')
p.start()
print('主进程')
查看进程ID 与 父进程ID
import os
from multiprocessing import Process
def taks():
# os.getpid = 取进程id
# os.getppid = 取父进程id
print('这里是进程: %sd 父进程ID:%s' % (os.getpid(), os.getppid()))
if __name__ == '__main__':
p = Process(target=taks)
p.start()
print('主进程',os.getpid())
.jion 等待子进程运行完毕
import os
from multiprocessing import Process
class MyProcess(Process):
def __init__(self, name):
super().__init__()
self.name = name
def run(self): # 固定名字run !!!
print(self.name)
if __name__ == '__main__':
p = MyProcess('子进程1')
p.start()
p.join() # 【主进程等 子进程运行完毕再执行后面程序】
print('主')
terminate 像操作系统发送干掉进程命令is_alive,不会立即关闭,所以is_alive立刻查看的结果可能还是存活
is_alive 判断进程是否存活