python创建进程问题求助
from multiprocessing import Processimport time
class MyProcess(Process):
def __init__(self,loop):
Process.__init__(self)
self.loop = loop
def run(self):
for count in range(self.loop):
time.sleep(1)
print(f'Pid:{self.pid} LoopCount: {count}')
if __name__ == '__main__':
for i in range(2,5):
p = MyProcess(i)
p.start()
有没有老师能给我解释一下这段代码的逻辑呀 ,我理不太清
执行结果如下
Pid:93640 LoopCount: 0
Pid:95944 LoopCount: 0
Pid:79292 LoopCount: 0
Pid:93640 LoopCount: 1
Pid:95944 LoopCount: 1
Pid:79292 LoopCount: 1
Pid:95944 LoopCount: 2
Pid:79292 LoopCount: 2
Pid:79292 LoopCount: 3 具体哪里不懂? suchocolate 发表于 2022-12-15 08:42
具体哪里不懂?
就是这里的这里的self.loop表示的是什么呀,它的作用是? 是肥宅SRP啊 发表于 2022-12-15 09:55
就是这里的这里的self.loop表示的是什么呀,它的作用是?
sleep次数 suchocolate 发表于 2022-12-15 10:08
sleep次数
那为什么么输出的时候那个loopcount不是按照0 1 0 1 2 0 1 2 3,而实0 0 0 1 1 1 2 2 3 是肥宅SRP啊 发表于 2022-12-15 11:22
那为什么么输出的时候那个loopcount不是按照0 1 0 1 2 0 1 2 3,而实0 0 0 1 1 1 2 2 3
1)因为没有join,多进程并行
2)3个进程一起开始循环,从0开始:
p1:0,1
p2:0,1,2
p3: 0,1,2,3
3) 每轮循环,大家各自都sleep 1秒,一起完成,所以一起打印 ,就都是0.
4)想要实现你说的效果,可以去掉sleep,大概率会出现。或者p.start()后加上p.join() suchocolate 发表于 2022-12-15 12:06
1)因为没有join,多进程并行
2)3个进程一起开始循环,从0开始:
p1:0,1
OKOK,我明白了谢谢~
页:
[1]