Я создал простой пиро-сервер и попытался упаковать его в pyinstaller, но всякий раз, когда я пытаюсь запустить исполняемый файл, вызывая «./main --s», а затем на другой вкладке терминала «./main --c», код даетмне правильный вывод, но когда я смотрю на монитор активности, появляются новые случаи, когда мой исполняемый файл создается постоянно.Прерывание пользователем экземпляров оболочки не оказывает никакого влияния, и эти процессы продолжают порождаться, пока я полностью не перезапущу свою систему.
вот мой основной скрипт, который я компилирую как исполняемый файл:
from face_id.face_id import server, client
from multiprocessing import freeze_support
import sys
if __name__ == "__main__":
freeze_support()
if sys.argv[1] == '--s':
server_start()
elif sys.argv[1] == '--c':
client_test()
вот определения классов для пиро:
from __future__ import print_function
import Pyro4
import time
import sys
import cv2
sys.path.append('./')
import face_id.face as face
@Pyro4.expose
@Pyro4.behavior(instance_mode="single")
class FaceIDServer(object):
def __init__(self):
pass
def test_server(self):
return 'hello world'
class FaceIDClient:
def __init__(self):
sys.excepthook = Pyro4.util.excepthook
self.server = Pyro4.Proxy("PYRONAME:face_id.server")
def test(self):
print(self.server.test_server())
def server_start():
Pyro4.Daemon.serveSimple(
{
FaceIDServer: "face_id.server"
},
ns=True)
def client_test():
client = FaceIDClient()
client.test()
Также эти процессы, которые запускаютсяиспользовать намного больше процессорного процента, чем это делает скрипт при запуске через python.Если я смотрю монитор активности или 'top -u', я вижу, что новый процесс запускается каждые пару секунд.Эти проблемы усугубляются, когда я использую полный код приложения вместо этого простого примера.
Кроме того, да, я использую новейший pyinstaller, я пытался заморозить многопроцессорность, сервер имен работает правильно, нонезависимо от того, что я делаю, эта проблема сохраняется.