gpt4 book ai didi

python - 终止无限循环

转载 作者:行者123 更新时间:2023-12-04 15:00:58 26 4
gpt4 key购买 nike

我正在尝试创建一个并行运行无限循环并在被告知时退出循环的程序。具体来说,无限循环在square函数中,当shv='STOP'时给出退出信号。当所有进程都读取该信号时,将不得不退出无限循环并返回。

问题是即使发出 STOP 信号后,Processes 也不会关闭。

一些注意事项:

  • 与多处理代码的许多实例一样,此代码在终端而不是 IDE 中运行。

代码:

import multiprocessing as mp
import time
import ctypes


def square(x, shv):

while shv.value != 'STOP':
time.sleep(3)
print(shv.value)
else:
print('stopped')

return


if __name__ == '__main__':
stopphrase = 'STOP'
proecess_num = 2

shv = mp.Value(ctypes.c_wchar_p, '')

processes = [mp.Process(target=square, args=(i, shv)) for i in range(proecess_num)]
for p in processes:
p.start()
print('Mapped & Started')
print(processes)

while shv.value != stopphrase:
inp = input('Type STOP and press Enter to terminate: ')
if inp == stopphrase:
shv.value = stopphrase
time.sleep(2)
p.terminate()
print(processes)

出于某种原因,即使我设置了 shv.value = stopphrase,这段代码在 print(processes) 的两种情况下都给出了以下内容:

[<Process name='Process-1' pid=9664 parent=6084 started>, <Process name='Process -2' pid=10052 parent=6084 started>]

请让我知道进一步的改进或问题的详细信息。

最佳答案

我想你的意思是让每个进程都有一个循环调用“join()”。

for p in processes:
p.join()

而不是只在其中一个上调用终止。

关于python - 终止无限循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66944872/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com