首页 > 解决方案 > Python3 进程未在 sys.exit() 上关闭

问题描述

所以我正在做一个项目,现在在 python2 中,以下代码可以正常工作。但我想升级到 python3,因为不再支持 python2。所以在pin_event_down函数一个进程中,备份就开始了。备份进程和函数正在启动一些数据记录线程,然后它应该被关闭/杀死。在 python2 中, sys.exit() 工作正常,当阅读 python 文档时,他们说你应该使用 system.exit() 有没有人知道为什么这个过程永远不会结束?此外,每次特定引脚关闭时,它都会再次使用相同的 RAM 内存创建进程,从而用双倍的 1 个进程填充 ram。

    def pin_event_down(self):
    """
    This function is used to create a product pin event.
    @return: None.
    """
        #do some stuff
        Process(target=self.backUp).start()
        #do some stuff

    def backUp(self):
    """
    This function is used to create a backup feedback log.
    @return: None.
    """
        if product is not None:
            self.logger.__init__()
            self.logger.start()
            #do some stuff
        sys.exit()

正在运行的进程的图片

标签: pythonmultithreadingmemoryprocesssys

解决方案


我认为这是因为您正在从进程调用 sys.exit() 。这只会终止当前进程,而不是父进程。一个非常混乱的方法是os._exit(1)在流程中使用,但这很危险,所以我不推荐它。

该线程可能对您有所帮助: 如何从 Python 线程中退出整个应用程序?


推荐阅读