鱼C论坛

 找回密码
 立即注册
查看: 3287|回复: 6

[已解决]python创建进程问题求助

[复制链接]
发表于 2022-12-14 17:09:20 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
from multiprocessing import Process
import 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
最佳答案
2022-12-15 12:06:33
是肥宅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()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-12-15 08:42:32 | 显示全部楼层
具体哪里不懂?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-12-15 09:55:50 | 显示全部楼层

就是这里的这里的self.loop表示的是什么呀,它的作用是?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-12-15 10:08:43 | 显示全部楼层
是肥宅SRP啊 发表于 2022-12-15 09:55
就是这里的这里的self.loop表示的是什么呀,它的作用是?

sleep次数
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-12-15 11:22:11 | 显示全部楼层

那为什么么输出的时候那个loopcount不是按照0 1 0 1 2 0 1 2 3,而实0 0 0 1 1 1 2 2 3
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-12-15 12:06:33 | 显示全部楼层    本楼为最佳答案   
是肥宅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()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-12-15 20:49:34 | 显示全部楼层
suchocolate 发表于 2022-12-15 12:06
1)因为没有join,多进程并行
2)3个进程一起开始循环,从0开始:
  p1:0,1

OKOK,我明白了谢谢~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-15 21:33

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表