Запуск фонового процесса Python
Кейс следующий: есть приложение на Python в main.py вызывается запуск процесса check_radio.py
def start_check_radio():
check_radio_path = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'check_radio.py')
for proc in psutil.process_iter(['name']):
if proc.info['name'] == 'python.exe' and check_radio_path in proc.cmdline():
proc.kill()
else:
subprocess.Popen(['python', check_radio_path], creationflags=subprocess.CREATE_NO_WINDOW)
start_check_radio()
player = FTPMusicPlayer()
player.run()
Если запускаю код в PyCharm, всё работает как надо. При закрытии основного окна приложения = check_radio работает в фоне.
Но после компиляции в exe через
pyinstaller -w --onefile main.py выполняется только основное приложения без запуска процесса check_radio.py
Подскажите, как быть и куда копать. Спасибо
UPD: Получилось запустить с явным указанием абсолютного пути к python.exe, но это не выход.
Может есть идеи?
Ответы (1 шт):
Автор решения: gord1402
→ Ссылка
Попробуйте не использовать subprocess а использовать threading к примеру так:
main.py
import check_radio
from threading import Thread
thread = None
def start_check_radio():
global thread
thread = Thread(target=check_radio.main)
thread.start()
def stop_check_radio():
check_radio.running = False
if thread:
thread.join()
start_check_radio()
try:
player = FTPMusicPlayer()
player.run()
finally:
stop_check_radio()
stop_check_radio()
check_radio.py
import time
running = True # Ключ к остановке выполнения
def main():
# Замени это своим кодом
while running:
time.sleep(1)