首页 > 解决方案 > 与等待并行运行方法

问题描述

我有一个函数可以生成随机反应时间并在打印到控制台之前等待。

这是我的代码

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阻塞程序。如何确保任一播放器都可以先打印?

标签: python

解决方案


您可以使用线程

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()

这会根据您在上面设置的反应时间随机给出结果。


推荐阅读