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 использует подход фонового потока, и у него нет этой проблемы.

Другие вопросы по тегам