Pyinstaller和Pyro4

时间:2018-12-11 09:10:21

标签: python python-3.x pyinstaller pyro pyro4

我创建了一个简单的pyro服务器,并尝试将其与pyinstaller打包在一起,但是每当我尝试通过调用“ ./main --s”然后在另一个终端选项卡“ ./main --c”中运行可执行文件时,代码就会给出我的输出正确,但是当我查看活动监视器时,就会不断创建可执行文件的新实例。用户中断Shell实例没有任何影响,并且在我完全重新启动系统之前,这些进程不断产生。

这是我作为可执行文件编译的主要脚本:

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()

这是pyro的类定义:

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运行时相比,与脚本相比,这些启动的进程占用的cpu百分比要高得多。如果我看活动监视器或“ top -u”,我可以看到每隔几秒钟就会产生一个新进程。当我使用完整的应用程序代码而不是简单的示例时,这个问题变得更加糟糕。

此外,是的,我正在使用最新的pyinstaller,我尝试了冻结多处理,名称服务器运行正常,但是无论我怎么做,这个问题仍然存在。

0 个答案:

没有答案