终止无限循环

2024-09-29 23:24:09 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

一些注意事项:

  • 与多处理代码的许多实例一样,此代码在终端中运行,而不是在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>]

请让我知道问题的进一步改进或细节


Tags: 代码nameimporttime信号valuempctypes

热门问题