在 Python 中更正多处理

Correct Multiprocessing in Python

我试图在特定时间之前跟踪用户的决定 - 为此,我要求输入,同时设置计时器。我正在尝试同时使用这两个,以便在有输入查询时计时器会运行。我目前的解决方案不起作用 - 有人可以告诉我我需要做什么才能在这里取得成功吗?

# pft4.py

from multiprocessing import Process
import time

def attack_request():
    attack_query = input("Do you want to attack? ")
    print(attack_query)

def attack_timer():
    timer = 0
    for i in range(3): 
        timer += 1
        time.sleep(1)
        print("Timer updated: " + str(timer))
    return timer

def main():
    process_1 = Process(target = attack_request)
    process_2 = Process(target = attack_timer)
    process_1.run(); process_2.run()
    process_1.join(); process_2.join()
    # attack_request()
    # attack_timer()

if __name__ == "__main__":
    main()

您必须呼叫 Process.start(),而不是 Process.run()run() 只是执行进程的主要功能。它 而不是 将此功能安排在不同的进程中 运行。 start() 正是这样做的。请参阅 Process class.

的参考文档

在您的代码中,process_1.run() 将执行 attack_request() 并阻塞直到 returns。然后它对 attack_timer() 做同样的事情。如果您使用 start() 代替,那么两者将同时执行。

另见相关 post:stdin 获取输入可能并不简单。像其他人建议的那样,使用线程可能更好。