Как я могу замедлить цикл в Python?
Есть ли способ управлять следующим циклом for, чтобы следующий элемент в списке печатался только одну секунду после предыдущего?
for i in l: print i
Другими словами, есть ли способ элегантно замедлить цикл в Python?
mpjan 15 май 2013, в 03:10
Поделиться
Это забавно, большинство людей хотят знать, как ускорить свои циклы!
Josh Caswell 15 май 2013, в 01:01
Я считаю, что запуск его на моем старом Treo 300 — хороший способ замедлить петли .
abarnert 15 май 2013, в 01:07
Если серьезно, если вы пытаетесь наблюдать за происходящим, вы можете попробовать запустить его в отладчике или в интерактивном визуализаторе, а не просто бросать вызовы в sleep .
abarnert 15 май 2013, в 01:11
Как можно замедлить без time.sleep? (Я на платформе, которая позволяет время, но не спать, страх безопасности с ними). Я уверен, что несоответствие, которое я вижу, связано с чем-то асинхронным на стороне сервера, и у меня нет доступа, и они не помогают . Я думаю, что ошибка, которую я вижу, исчезнет с более медленным выполнением.
gseattle 19 окт. 2017, в 04:19
Показать ещё 2 комментария
Поделиться:
5 ответов
Лучший ответ
Вы можете использовать time.sleep
import time for i in l: print i time.sleep(1)
karthikr 15 май 2013, в 02:30
Поделиться
Если вы используете time.sleep(1) , ваши циклы будут работать чуть больше секунды, так как цикл и печать также занимают некоторое время. Лучший способ — спать на оставшуюся часть секунды. Вы можете рассчитать, что с помощью -time.time()%1
>>> import time >>> L = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] >>> for i in L: . time.sleep(-time.time()%1) . print i .
Легко это наблюдать, используя print i, repr(time.time())
>>> for i in L: . time.sleep(-time.time()%1) . print i, repr(time.time()) . 0 1368580358.000628 1 1368580359.001082 2 1368580360.001083 3 1368580361.001095 4 1368580362.001149 5 1368580363.001085 6 1368580364.001089 7 1368580365.001086 8 1368580366.001086 9 1368580367.001085
>>> for i in L: . time.sleep(1) . print i, repr(time.time()) . 0 1368580334.104903 1 1368580335.106048 2 1368580336.106716 3 1368580337.107863 4 1368580338.109007 5 1368580339.110152 6 1368580340.111301 7 1368580341.112447 8 1368580342.113591 9 1368580343.114737
John La Rooy 15 май 2013, в 02:36
Поделиться
Помимо принудительного выравнивания по точной второй метке, это также предполагает, что стоимость time.time и time.sleep незначительна, но время print является значительным, и что sleep точному масштабу, оба из которых являются вряд ли будет правдой на большинстве платформ .
abarnert 15 май 2013, в 01:09
@abarnert, время, вызванное time.time() и time.sleep() , не имеет большого значения, если оно достаточно согласованно. sleep() не дает гарантии для точного времени в любом случае.
John La Rooy 15 май 2013, в 01:16
Вторая часть вашего комментария — это главное. sleep не точен или точен независимо от того, что вы делаете. Он может легко .000 за следующую отметку .000 , что означает, что ваш код потеряет целую секунду, в то время как «тупой» код просто потеряет 50 мкс. Это действительно улучшение? Вам нужно более сложную логику ( в основном, следить за временем, чтобы спать , пока, так что вы можете скорректировать проспать) на самом деле сделать это правильно. Очень мало ситуаций, когда sleep(1) не достаточно хорош, но sleep(-time.time()%1) есть.
abarnert 15 май 2013, в 01:35
@abarnert, зависит от варианта использования. Если код в цикле более сложен, чем print и занимает значительную часть (но меньше) секунды, моя версия будет работать 3600 раз в час.
Как замедлить цикл while python
Циклы while / do-while в JavaScript: как использовать в коде, примеры и описание ♾️
25 февраля 2023
Оценки статьи
Еще никто не оценил статью
Цикл while в JavaScript используется для повторения определенного блока кода, пока условие остается истинным.
Синтаксис цикла while
while (условие) // блок кода для повторения >
Цикл while проверяет условие перед каждой итерацией и продолжает работу, пока условие остается истинным. Если условие изначально ложное, блок кода ни разу не выполнится.
Примеры использования цикла while
Вот несколько примеров, демонстрирующих использование цикла while
Повторение блока кода, пока число меньше 10:
let i = 0; while (i 10) console.log(i); i++; >
Повторение блока кода до тех пор, пока пользователь не введет корректный пароль:
let password = ''; while (password !== 'secret') password = prompt('Введите пароль:'); > alert('Добро пожаловать!');
Генерация случайных чисел, пока не будет найдено число, кратное 5:
let randomNumber; while (true) randomNumber = Math.floor(Math.random() * 100); if (randomNumber % 5 === 0) console.log(randomNumber); break; > >
Перебор элементов массива до тех пор, пока не будет найден элемент с определенным значением:
const myArray = [1, 2, 3, 4, 5]; let i = 0; while (i myArray.length) if (myArray[i] === 3) console.log('Найден элемент со значением 3!'); break; > i++; >
Цикл while является одним из самых универсальных циклов в JavaScript и может быть использован для решения различных задач в коде. Однако следует быть осторожным, чтобы не создавать бесконечные циклы, которые могут замедлить работу программы или даже привести к ее зависанию.
Цикл do-while
Цикл do-while в JavaScript выполняет блок кода, а затем проверяет условие для продолжения выполнения цикла. То есть, даже если условие не выполнено, блок кода будет выполнен хотя бы один раз.
Синтаксис цикла do-while
Синтаксис цикла do-while выглядит следующим образом:
do // код, который нужно выполнить хотя бы один раз > while (условие);
Примеры цикла do-while
Пример использования цикла do-while:
let i = 0; do console.log(i); i++; > while (i 5);
В данном примере, сначала будет выполнен блок кода внутри цикла, который выведет в консоль числа от 0 до 4. Затем, после выполнения блока кода, будет проверено условие i < 5, и если оно верно, то цикл будет продолжен, иначе выполнение цикла завершится.
Еще один пример использования цикла do-while:
let number; do number = parseInt(prompt("Введите число больше 100", "")); > while (number 100 && number != null);
В данном примере пользователю будет предложено вводить числа до тех пор, пока он не введет число больше 100. Благодаря циклу do-while, блок кода будет выполнен хотя бы один раз, даже если пользователь введет число меньше или равное 100. После каждого ввода числа будет проверено условие number
Меню категорий
-
Загрузка категорий.
Добро пожаловать в Блог Разработчика Владислава Александровича.
Ведется медленная, но уверенная разработка функционала сайта.
Django Core: 0.3.4 / Next.js 1.0 / UPD: 05.06.2023
С++ Как замедлить выполнение цикла while?
Как сделать что бы он увеличивался на единицу каждую секунду?
То-есть
1
(одна секунда)
2
(одна секунда)
И т.п.
- Вопрос задан более двух лет назад
- 839 просмотров
Комментировать
Решения вопроса 2

#include int main(int argc, char** argv) < int y = 0; while (y >= 20) < std::this_thread::sleep_for(std::chrono::seconds(1)); y++; >return 0; >
Ответ написан более двух лет назад
Комментировать
Нравится 3 Комментировать

Целеустремленный
#include #include int main() < int i=0; while(i<1) < sleep(1); i++; >std::cout
под линуксом.
https://proginfo.ru/sleep-delay/
Ответ написан более двух лет назад
Комментировать
Нравится Комментировать
Ответы на вопрос 2
Как замедлить часть кода,но не замедлять весь код?
Делаю небольшую игру на Pygame. В моем коде есть функция, в которой while True запускает меню. В этом меню есть блок, который постоянно перемещает спрайт на рандомное кол-во пикселей. Нужно сделать так, чтоб замедлился не весь код, а только этот блок (чтоб спрайт перемещался не моментально, а с задержкой в 3 секунды). Использовал pygame.time.delay() и time.sleep() , но они замедляют весь код. Подскажите, что можно сделать. Если нужно, то скину код.
Отслеживать
16k 4 4 золотых знака 19 19 серебряных знаков 30 30 бронзовых знаков
задан 1 июл 2019 в 14:52
41 1 1 бронзовый знак
а можно код перемещения? самый очевидный способ завести переменную, которая будет влиять на скорость и изменять ее в нужную сторону
1 июл 2019 в 15:00
Добавьте вместо sleep условие, которое будет срабатывать раз в 3 секунды, сверяясь с системным таймером
1 июл 2019 в 15:12
1 ответ 1
Сортировка: Сброс на вариант по умолчанию
Задержек быть не должно. Чтобы выполнять некоторый код с какой-то периодичностью, надо генерировать события с этой периодичностью и обрабатывать их:
import pygame screen = pygame.display.set_mode((300, 200)) clock = pygame.time.Clock() pygame.display.set_caption('Timer demo') MOVE_DOWN_DELAY = 500 MOVE_DOWN_EVENT = pygame.USEREVENT + 1 pygame.time.set_timer(MOVE_DOWN_EVENT, MOVE_DOWN_DELAY) dot = pygame.Rect(150, 10, 10, 10) while True: clock.tick(50) if pygame.event.get(pygame.QUIT): break for e in pygame.event.get(): if e.type == MOVE_DOWN_EVENT: dot.move_ip(0, 10) screen.fill((0, 0, 0)) pygame.draw.rect(screen, (150, 150, 150), dot) pygame.display.flip()
