如何在不使用装饰器的情况下运行一次功能?

问题描述 投票:-2回答:1

当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
1个回答
2
投票

这条线

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()
© www.soinside.com 2019 - 2024. All rights reserved.