我有一个基本上在while循环中执行的Python脚本:
while 1:
<do stuff>
我想做的是让它随机执行一次或两次左右的行动。
我尝试过像random.random()&gt;这样的解决方案。 5:但它只是经常发生。
我是否有任何想法可以确保它不会每小时发生一次或两次而不会不断发生?
答案 0 :(得分:2)
使用随机数发生器为操作创建时间。这不会阻止你在循环中的其他动作。
import time
import random
def get_new_time_to_perform_action():
delay_minutes = (30 + random.random() * 30) # 30-60 minutes
return time.time() + delay_minutes * 60
next_time_to_run = get_new_time_to_perform_action()
while True:
if (time.time() >= next_time_to_run):
# <do action>
next_time_to_run = get_new_time_to_perform_action()
# <do other actions>
答案 1 :(得分:2)
如果你有一个时间窗口,它可能是一个很好的选择应用睡眠间隔。
例如,你可以这样做:
from time import sleep
from random import randint
while 1:
<do stuff>
sleep(randint(0, 3600))
答案 2 :(得分:0)
为了控制每小时的重复次数,我建议用random.randint
选择一个int然后选择事件将在一小时内发生的确切时刻,你可以在[0,1 [with {{ 1}}并将其转换为秒数并等待random.random
。