Мне кажется, что мне просто нужна функция "chill out", чтобы заставить Python остановить все, что он делает, позволить целевому пользовательскому интерфейсу восстановиться, обновить и обработать ввод, а затем вернуть его обратно в Python.Какая функция будет это делать?
Вызов sleep()
(любой его вариант) заблокирует выполнение потока, из которого вы его вызываете.Это просто последнее, что вы хотите сделать, если вы хотите иметь отзывчивый пользовательский интерфейс в этом потоке.Проще говоря, когда вы ложитесь спать, вы ничего не можете сделать!
Если у вас нет неотвечающего пользовательского интерфейса, это означает, что в потоке, который обрабатывает пользовательский интерфейс, выполняется долго выполняемая задача, илипоток пользовательского интерфейса блокируется.Таким образом, чтобы следовать логике, если ваши 1-секундные сны (они на самом деле являются дремами, а не правильными снами!) Приводят к зависанию пользовательского интерфейса, они должны происходить в том же потоке, что и пользовательский интерфейс, или в потоке, которым является пользовательский интерфейс.в ожидании.
Я действительно не знаю, как вы используете PIL и как вы взаимодействуете с приложением, изображение которого вы копируете, но не похоже, что вы внедряете его в этот другой процесс.Так что я предполагаю, что этот процесс ожидает вашего потока.Если это так, то нет реального пути к решению вашей проблемы.Вам просто нужно тратить меньше времени на то, что вы делаете.Звонок sleep()
может только усугубить ситуацию.
Звонок SwitchToThread()
тоже не может помочь.Все, что он сделает, - это разрешит запуск другого потока (если он ожидает и готов к запуску), но вы хотите, чтобы поток был запущен.В любом случае это не будет иметь большого значения, потому что система будет знать, что ваш поток хочет работать, и будет планировать его снова в свое время.
Суть в том, что у вас есть код, выполняющийся в процессе пользовательского интерфейса, который блокируетэтот процесс.Вам просто нужно сделать это как можно быстрее, чтобы минимизировать помехи.