为什么pyInstaller压缩程序在Windows上创建新进程时会创建监护程序?

时间:2014-08-16 10:56:19

标签: python windows multiprocessing pyinstaller

我正在尝试使用Windows 7上的多道程序模块在python中编写闹钟程序。

这一切在翻译中运行良好。但是当按pyinstaller打包在一个文件中时,每次代码创建一个进程时,结果都是2个进程,一个是父进程,另一个是子进程。当代码杀死父进程时,子进程成为孤儿进程。

代码:

from multiprocessing import Process,freeze_support
import time
import winsound

def startout(seconds,name):
    freeze_support()
    print name+':pid '+str(os.getpid())+' is created'
    startTime=time.time()
    while (time.time()-startTime)<seconds:
        time.sleep(1)
    winsound.PlaySound('SystemQuestion', winsound.SND_ALIAS)
    print name+' end'

class alarmCenter:

    def __init__(self):
        self.alarmList={'alarm1':None,'alarm2':None,'alarm3':None}

    def newAlarm(self,seconds,name):
        if self.alarmList[name]!=None:
            if self.alarmList[name].is_alive():
                return False
        ala=Process(target=startout, args=(seconds,name))
        ala.deamon=True
        ala.start()
        self.alarmList[name]=ala
        return True

    def stopAlarm(self,name):
        try:
            self.alarmList[name].terminate()
            self.alarmList[name].join()
            self.alarmList[name]=None
        except Exception:
            pass

    def terminateAll(self):
        for each in self.alarmList.keys():
            if self.alarmList[each]!=None:
                self.alarmList[each].terminate()
    if __name__=='__main__':
        freeze_support()
        #....

请注意,multiprocessing.freeze_support()已经存在。

有人可以告诉我如何杀死子进程或修复此错误吗?

0 个答案:

没有答案