我试图创建一个并行运行无限循环的程序,并在被告知时退出循环。具体地说,无限循环在square
函数中,退出信号在shv='STOP'
时给出。当所有进程读取该信号时,必须退出无限循环并返回
问题是Processes
即使在发出STOP
信号后也不会关闭
一些注意事项:
守则:
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()”的循环
而不是只给其中一个打电话
相关问题 更多 >
编程相关推荐