Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/88.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python中正确的多处理_Python_Multiprocessing_Python Multiprocessing - Fatal编程技术网

Python中正确的多处理

Python中正确的多处理,python,multiprocessing,python-multiprocessing,Python,Multiprocessing,Python Multiprocessing,我试图在某个特定时间之前跟踪用户的决定——为此,我在设置计时器的同时请求输入。我试图同时使用这两个函数,以便在查询输入时计时器将运行。我目前的解决方案不起作用——有人能告诉我我需要做些什么才能在这里取得成功吗 # pft4.py from multiprocessing import Process import time def attack_request(): attack_query = input("Do you want to attack? ") print(a

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

# 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()
只执行进程的主函数。它不会安排在不同的进程中运行此函数<代码>开始()正是这样做的。请参阅
过程
类的参考文档

在代码中,
process\u 1.run()
将执行
attack\u request()
并阻塞,直到返回。然后对
攻击\u timer()
执行相同的操作。如果改为使用
start()
,则两者将同时执行

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

使用线程而不是多处理您需要的是并发性而不是并行性您甚至不需要计时器。只需存储计时器的开始时间并进行减法运算。请参阅。