У мене є сценарій Python, який в основному виконується протягом певного часу:
while 1:
<do stuff>
Я хотів би зробити це, щоб він виконував дії навмання, як раз, чи двічі за годину або близько того.
Я пробував такі рішення, як, якщо random.random ()> 5: але це трапляється занадто часто.
Будь-які ідеї, як я можу переконатися, що вона вимикається один чи два рази на годину, не вимикаючись постійно?
Відповіді:
2 для відповіді № 1Використовуйте рандомізатор, щоб створити час для виконання дії. Це не призведе до блокування інших дій у циклі.
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>
2 для відповіді № 2
Якщо у вас є часове вікно, можливо, вдалий варіант застосувати інтервал сну.
На прикладі ви можете:
from time import sleep
from random import randint
while 1:
<do stuff>
sleep(randint(0, 3600))
0 для відповіді № 3
Щоб контролювати кількість повторень щогодини, я б запропонував вибрати інт random.randint
то для вибору точного моменту події відбуватимуться протягом години, через яку ви можете вибрати поплавок у [0,1 [с random.random
і перетворити його на кілька секунд і зачекати time.sleep
.