python sleep == IDE заблокирован
Когда мой сценарий спит в течение 50 секунд, моя IDE блокируется, что очень раздражает. Я не могу переключать вкладки, просматривать исходный код, вводить код и т. Д. Это происходит в pylde и pyscripter, я не пробовал другие IDE. Что я могу сделать, чтобы это исправить? я на самом деле делаю
for i in range(0, timeInSeconds): time.sleep(1)
надеясь, что среда будет обновляться один раз в секунду, но это не так. Что я могу сделать, чтобы это исправить?
5 ответов
Я предполагаю, что вы запускаете свой код из IDE?
Ваша IDE, вероятно, блокируется во время выполнения вашего кода. Ищите какую-то настройку, которая могла бы контролировать это поведение, в противном случае я думаю, что ваш единственный выбор - изменить IDE. (Или запустите свой код снаружи IDE)
Можете ли вы настроить внешний скрипт для запуска? Я не знаю о конкретных IDE, но я бы попытался создать другой процесс для отлаженного скрипта, а не запускать их под IDE. Если это не помогает, то это проблема IDE.
Лично я думаю, что вы никогда не должны выполнять код в одном цикле с вашей IDE. Так как большинство IDE запускают mainloop с графическим интерфейсом, блокировка приведет к полной остановке пользовательского интерфейса. Это просто напрашивается на неприятности, и я бы получал отчеты об ошибках в обеих этих IDE.
Проблема в вашей IDE, а не в Python. Я не часто сплю, я только что попробовал его в Eric IDE, и вы можете использовать свою IDE, когда ваш код работает и спит. Если вы не можете настроить IDE на это и вам это нужно, подумайте о том, чтобы сменить IDE или запустить свой код из консоли.
Я подозреваю, что проблема IDE сидит в цикле, ожидая завершения сценария.
Это само по себе не является проблемой, при условии, что любые сгенерированные пользователем сообщения все еще обрабатываются, пока IDE находится в этом цикле.
Но я подозреваю, что в этом случае происходит ошибка: среда IDE просто выполняет цикл без обработки и сообщений, и, следовательно, пользовательский интерфейс заблокирован.
Необходимо изменить среду IDE, чтобы обрабатывать сообщения графического интерфейса во время цикла или, в качестве альтернативы, создать поток для запуска сценария. Затем поток будет работать в фоновом режиме, а графический интерфейс останется отзывчивым.
Например, Zeus для Windows IDE использует подход фонового потока, и у него нет этой проблемы.