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!!")
breakos.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!!
请在这里输入引用内容

京公网安备 11010502036488号