from time import sleep from multiprocessing import Process import os m = 1 def task1(a): global m while True: print("任务进行1-------------",m,'-----',os.getpid(),'-----',os.getppid()) sleep(a) m += 1 def task2(a): global m while True: sleep(a) print('任务进行2-------------',m,'-----',os.getpid(),'------',os.getppid()) m += 1 if __name__ == '__main__': print(os.getpid()) p1 = Process(target=task1,name='task1111',args=(1,)) # p1.run() p1.start() # print(p1.name) p2 = Process(target=task2,name='task2222',args=(2,)) #target为函数,name起一个名字,args为参数 # p2.run() p2.start() num = 1 while True: sleep(0.1) num += 1 print("----------",num) if num == 100: p1.terminate() #关闭进程p1 p2.terminate() print("end!!") break
os.getpid表示当前进程,os.getppid表示当前进程的父进程
代码中父进程与子进程在运行中互不干扰,没有任务资源抢夺情况发生,有各自的空间,且变量m也是每个进程各自有一个m,并不会有进程间累加
运行结果如下
76196
---------- 2
任务进行1------------- 1 ----- 80432 ----- 76196
---------- 3
---------- 4
---------- 5
---------- 6
---------- 7
---------- 8
---------- 9
---------- 10
---------- 11
---------- 12
任务进行1------------- 2 ----- 80432 ----- 76196
---------- 13
---------- 14
---------- 15
---------- 16
---------- 17
---------- 18
---------- 19
---------- 20
---------- 21
---------- 22
任务进行2------------- 1 ----- 80836 ------ 76196
任务进行1------------- 3 ----- 80432 ----- 76196
---------- 23
---------- 24
---------- 25
---------- 26
---------- 27
---------- 28
---------- 29
---------- 30
---------- 31
---------- 32
任务进行1------------- 4 ----- 80432 ----- 76196
---------- 33
---------- 34
---------- 35
---------- 36
---------- 37
---------- 38
---------- 39
---------- 40
---------- 41
---------- 42
任务进行2------------- 2 ----- 80836 ------ 76196
任务进行1------------- 5 ----- 80432 ----- 76196
---------- 43
---------- 44
---------- 45
---------- 46
---------- 47
---------- 48
---------- 49
---------- 50
---------- 51
---------- 52
---------- 53
任务进行1------------- 6 ----- 80432 ----- 76196
---------- 54
---------- 55
---------- 56
---------- 57
---------- 58
---------- 59
---------- 60
---------- 61
---------- 62
任务进行2------------- 3 ----- 80836 ------ 76196
---------- 63
任务进行1------------- 7 ----- 80432 ----- 76196
---------- 64
---------- 65
---------- 66
---------- 67
---------- 68
---------- 69
---------- 70
---------- 71
---------- 72
---------- 73
任务进行1------------- 8 ----- 80432 ----- 76196
---------- 74
---------- 75
---------- 76
---------- 77
---------- 78
---------- 79
---------- 80
---------- 81
---------- 82
任务进行2------------- 4 ----- 80836 ------ 76196
---------- 83
任务进行1------------- 9 ----- 80432 ----- 76196
---------- 84
---------- 85
---------- 86
---------- 87
---------- 88
---------- 89
---------- 90
---------- 91
---------- 92
---------- 93
任务进行1------------- 10 ----- 80432 ----- 76196
---------- 94
---------- 95
---------- 96
---------- 97
---------- 98
---------- 99
---------- 100
end!!
请在这里输入引用内容