Python进程无法通过阻塞输入启动

0 投票
1 回答
27 浏览
提问于 2025-04-12 08:47

这是一个简单的测试代码。如果把 # time.sleep(0.5) 这一行去掉,函数就不会在其他进程中启动。那有没有办法不使用 time.sleep 呢?

import multiprocessing
import time


def add(counter):
    while 1:
        print(counter.value)
        counter.value += 1
        time.sleep(1)


if __name__ == '__main__':
    counter = multiprocessing.Value('i', 0)
    t = multiprocessing.Process(target=add, args=(counter,))
    t.start()
    #  time.sleep(0.5)
    input("blocking...")

我原本期待的结果是:0 1 2 等等。但我遇到了阻塞...

更新:
在控制台中可以正常运行。如果通过 Pycharm 窗口运行,进程就会被阻塞。

settings_pycharm.png

1 个回答

-1

看起来你忘了连接了:

import multiprocessing
import time

def add(counter):
    while 1:
        print(counter.value)
        counter.value += 1
        time.sleep(1)
        
if __name__ == '__main__':
    counter = multiprocessing.Value('i', 0)
    t = multiprocessing.Process(target=add, args=(counter,))
    t.start()
    t.join()
    input("blocking...")

撰写回答