首页 > 解决方案 > 如何在不使用装饰器的情况下运行一次函数?

问题描述

当 y < x 函数应该只运行一次并且只播放一种声音,但是当我运行脚本时它会播放不止一种。如何只运行一次?

我试图用装饰器解决它,但我失败了。

def random_choice(x, y):
    random_Process = [Process(target=play_sound0).start(),
    Process(target=play_sound1).start(),
    Process(target=play_sound2).start()]
    if y < x:
        random.choice(random_Process)


if __name__ == '__main__':
    random_choice(50, random.randint(40, 60))    

期望:一个和随机

Process(target=play_sound1).start()

运行时:三个和随机

Process(target=play_sound2).start()
Process(target=play_sound0).start()
Process(target=play_sound1).start()

标签: python

解决方案


这条线

random_Process = [Process(target=play_sound0).start(),
    Process(target=play_sound1).start(),
    Process(target=play_sound2).start()]

启动所有三个 Process实例。如果您只想开始一个,请选择target

targets = [
  play_sound0,
  play_sound1,
  play_sound2
]

target = random.choice(targets)
Process(target=target).start()

推荐阅读