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
获取输入可能并不简单。像其他人建议的那样,使用线程可能更好。使用线程而不是多处理您需要的是并发性而不是并行性您甚至不需要计时器。只需存储计时器的开始时间并进行减法运算。请参阅。