1 from multiprocessing import Process
2 import time
3
4 # 第一种创建方式,实例化Process类传值
5 def task(name):
6 print('%s is running'%name)
7 time.sleep(3)
8 print('%s is over'%name)
9
10
11 if __name__ == '__main__':
12 # 1 创建一个对象
13 p = Process(target=task, args=('谷爱凌',))
14 p.start()
15 print('主进程')
16
17
18 # 第二种方式 类的继承
19 from multiprocessing import Process
20 import time
21
22
23 class MyProcess(Process):
24 def run(self): # 这里必须要用run方法
25 print('GGG')
26 time.sleep(1)
27 print('YYY')
28
29
30 if __name__ == '__main__':
31 p = MyProcess()
32 p.start()
33 print('主进程')
34
# p.join()方法使主进程必须等待子进程执行完毕返回后才能继续执行
# p.terminate() # 告诉操作系统杀死当前进程 根据操作系统调度可能会有延迟 类似kill
from multiprocessing import Process
# 进程之间数据相互隔离
money = 100
def task():
global money # 局部修改全局
money = 200
print('子进程',money)
if __name__ == '__main__':
p = Process(target=task)
p.start()
p.join()
print('主进程',money)
from multiprocessing import Process, current_process
查看当前进程号id与父进程号id的方法
'''
current_process().pid # 查看当前进程的进程号
import os
os.getpid() # 查看当前进程进程号
os.getppid() # 查看当前进程的父进程进程号
p.terminate() # 杀死当前进程 由操作系统执行
time.sleep(0.1) # 如果不加本行延时代码,操作系统调度可能慢于程序执行,导致下一行会判断为仍然存活
print(p.is_alive()) # 判断当前进程是否存活 如果没有上一行的延时,p进程可能仍会判断为存活
'''
# 关于守护进程daemon
from multiprocessing import Process
import time
def task():
print('子进程活着')
time.sleep(1)
print('子进程死亡')
if __name__ == '__main__':
p = Process(target=task)
p.daemon=True # 将p作为守护进程,一定要在start前执行才有效
p.start()
# p.daemon=True # AssertionError: process has already started
print('主进程')