python - 与等待并行运行方法
问题描述
我有一个函数可以生成随机反应时间并在打印到控制台之前等待。
这是我的代码
import time
import random
def saySnap(player):
reactionTime = random.randint(120, 401) / 1000
time.sleep(reactionTime)
print("{} : Snap!".format(player))
saySnap("p1")
saySnap("p2")
这会导致“p1”始终排在第一位,因为会time.sleep
阻塞程序。如何确保任一播放器都可以先打印?
解决方案
您可以使用线程:
import time
import random
import threading
def saySnap(player):
reactionTime = random.randint(120, 401) / 1000
time.sleep(reactionTime)
print(f"{player}: Snapped in {reactionTime}!")
p1_thread = threading.Thread(target=saySnap, args=("p1",))
p2_thread = threading.Thread(target=saySnap, args=("p2",))
p1_thread.start()
p2_thread.start()
这会根据您在上面设置的反应时间随机给出结果。