尝试多进程,但程序甚至在启动之前就死亡了



我有这样的代码:

from multiprocessing import Process, cpu_count
def readplayerinfo():
y=0
Gameon = True
while Gameon:
y+=1
print('y',y)
if y == 50:
Gameon = False

return None
def main():
islooping = True
x=0
a = Process(target=readplayerinfo,args = ())
a.start()
while islooping:
print('x',x)
x+=1
if x == 100:
islooping = False
a.join()

if __name__ == '__main__':
main()

程序的目标是创建两个进程,在每个进程中执行一个while循环,并同时打印y和x(最快的一个显然首先打印)。

但是当我运行它时,终端只显示'x 0'并且它冻结了

我尽了最大的努力去研究,但这是我第一次尝试多处理。

所以我的问题是我如何使这个多处理工作?

编辑:我被告知IDLE ide有多处理问题,所以我切换到使用ubuntu 20.04的终端,然后我的输出只有y被打印,然后它冻结了,没有x被打印。另外,我确实打印(cpu_count()),它返回我4,所以我不认为这是一个硬件问题

我尝试了很多东西,但是让x和y打印的唯一方法是做2个不同的过程。x和y将一个接一个地打印,但由于启动进程的开销,它们之间会有轻微的延迟。另外,我不知道为什么,但是IDLE不能很好地与多处理一起工作。所以你需要找到另一个IDE,或者在终端中使用'python3 (nameofthefile).py'。

from multiprocessing import Process, cpu_count
def secondprocess():
y=0
Gameon = True
while Gameon:
y+=1
print('y',y)
if y == 50000:
Gameon = False

return None
def firstprocess():
x = 0
islooping = True
while islooping:
x+=1
print('x',x)
if x == 50000:
islooping = False

def main():
a = Process(target=secondprocess,args = ())
b = Process(target=firstprocess,args = ())
a.start()
b.start()
a.join()
b.join()

if __name__ == '__main__':
main()

最新更新