/ / Python Random in while Loop [закритий] - python, python-2.7, python-3.x

Python Random в Пока Loop [закрито] - python, python-2.7, python-3.x

У мене є сценарій 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.