При компиляции многопоточной программы на Windows, столкнулся с проблемой что if __name__ == '__main__': не работает и при запуске потоков, они начинают перезапускать самих себя, как исправить ?
Вроде читал что есть такая проблема с Windows но не помню где.
Проблема ток в запущенной программе, если запускать с командной строки, то все работает как надо.
Ivan Yakushenko, я нубик конечно, а есть разница что компилирую если if __name__ == '__main__': не работает ?
Я сталкивался с этой проблемой год назад, как писал в вопросе это особенность window когда компилируешь в exe
Решил вопрос вставив:
if __name__ == '__main__':
multiprocessing.freeze_support ()
Я допустил ошибку в вопросе сказал что это многопоточность, хотя была многопроцессорность.
Я не читал как именно данная фнукция работает, но видел мельком что для корректной работы многопроцессорности при компиляции в windows нужно указывать multiprocessing.freeze_support ()
Дополню.
Я пытался читать как эта функция работает, но моих знаний не хватает чтобы это понять, ибо самоучка и учу только по мере необходимости.
Если файл с if __name__ == "__main__": запускается из какого-то другого файла, то if не сработает.
Соответственно если нужно использовать файл в программе с многопоточностью, нужно этот if убрать.