Python多处理过早关闭

2024-09-24 06:24:18 发布

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

我正试图将多处理集成到一个项目中,但我不能让它工作。 这就是我得到的:

import time
import winsound
from multiprocessing import Process
winsound.MessageBeep()
def pr1():
    while 1:
        winsound.MessageBeep()
        time.sleep(0.5)
if __name__ == '__main__':
    p = Process(target=pr1, args=())
    p.start()
    p.join()

while 1:
    print('hey')

但如果我运行它,我只听到一个哔哔声,我想它重复。我该怎么做?你知道吗

b计划, 我现在得到了这个,我只得到了正确的答案:

import time
import winsound
from multiprocessing import Process
def pr1():
    while 1:
        winsound.MessageBeep()
        print('its working') 
        time.sleep(0.5)
if __name__ == '__main__':
    print('correct')
    p = Process(target=pr1, args=())
    p.start()
    p.join()

while 1:
    print('hey')

所以这个过程的创建是有问题的。 有什么想法吗?你知道吗


Tags: namefromimportiftimemaindefsleep
2条回答

要显示“its working”消息,您需要刷新缓冲区,因为通常在进程中,输出通常是缓冲的。你知道吗

import time
import winsound
from multiprocessing import Process
import sys
def pr1():
    while 1:
        winsound.MessageBeep()
        print('its working')
        time.sleep(0.5)
        sys.stdout.flush()
if __name__ == '__main__':
    print('correct')
    p = Process(target=pr1, args=())
    p.start()
    p.join()

缩进决赛

while 1:
    print('hey')

使其成为if-块的一部分

在Windows下启动子进程时,首先执行模块内容,然后运行作为target给定的可调用函数。因为模块从未完成执行,所以不会发生这种情况。你知道吗

第二个片段作为一个整体变成:

import time
import winsound
from multiprocessing import Process
def pr1():
    while 1:
        winsound.MessageBeep()
        print('its working') 
        time.sleep(0.5)
if __name__ == '__main__':
    print('correct')
    p = Process(target=pr1, args=())
    p.start()
    p.join()

    while 1:
        print('hey')

相关问题 更多 >