Код на неопределенное время зависает доходя до while
У меня есть функции запуска приложений:
# Запуск MEmu
def start_memu():
for proc in psutil.process_iter():
try:
if 'memu.exe' in proc.name().lower():
print('MEmu уже запущен.')
return True
except (psutil.NoSuchProcess, psutil.AccessDenied, psutil.ZombieProcess):
pass
print('Запуск MEmu...')
os.startfile(r"labels\1.lnk")
print('Ожидание запуска машины...')
time.sleep(25)
# Запуск MicroSIP
def start_microsip():
for proc in psutil.process_iter():
try:
if 'microsip.exe' in proc.name().lower():
print('MicroSIP уже запущен.')
return True
except (psutil.NoSuchProcess, psutil.AccessDenied, psutil.ZombieProcess):
pass
print('Запуск MicroSIP')
subprocess.call(r"start MicroSIP\microsip.exe", shell=True)
# Подключение к MicroSIP и MEmu
def connect_to_devices():
global app, device
app = Application(backend="uia").connect(path=r"MicroSIP\microsip.exe")
client = AdbClient(host="127.0.0.1", port=5037)
sl = None
devices = client.devices()
for de in devices:
sl = str(de.serial)
device = client.device(sl)
Далее, в другой функции я их вызываю:
def call():
memu_counter = 0
print('Запуск программ')
start_memu()
start_microsip()
connect_to_devices()
while memu_counter < 81:
# Ожидает окно входящего звонка MicroSIP
try:
print('Ожидание звонка')
check = app.window().child_window(title="Отклонить", control_type="Button")
call_window = app.window().Edit2.get_value()
number = (((call_window.split('@'))[-2]).split())[-1]
except IndexError:
time.sleep(1)
continue
ТУТ ЕЩЁ много кода, вне except.
Код печатает один раз print('Ожидание звонка')
и зависает на какое-то время (около -40-50секунд) и дальше начинается итерация, Ожидание звонка начинает печататься каждую секунду.
Код зависает только в том случае, если одно из двух приложений было закрыто и код его открывает.
Источник: Stack Overflow на русском