尝试多处理,但程序甚至在开始之前就死了
Trying multiprocessing but the program dies before it even starts
我有这个代码:
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。另外,我执行了 print(cpu_count()) 并返回了 4,所以我认为这不是硬件问题
我尝试了很多方法,但让 x 和 y 交替打印的唯一方法是执行 2 个不同的过程。 x 和 y 会一个接一个地打印,但是它们之间会有轻微的延迟,因为启动 a processe.Plus 的开销,我不知道为什么,但是 IDLE 不能很好地与 multiprocessing 一起工作.所以你需要找到另一个 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()
我有这个代码:
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。另外,我执行了 print(cpu_count()) 并返回了 4,所以我认为这不是硬件问题
我尝试了很多方法,但让 x 和 y 交替打印的唯一方法是执行 2 个不同的过程。 x 和 y 会一个接一个地打印,但是它们之间会有轻微的延迟,因为启动 a processe.Plus 的开销,我不知道为什么,但是 IDLE 不能很好地与 multiprocessing 一起工作.所以你需要找到另一个 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()