进程子类无法在Windows中运行

时间:2014-02-14 20:53:36

标签: python python-2.7

我正在运行一个程序,该程序使用队列来回发送信息来启动进程。我无法在Windows中启动一个类(从Process继承)(它适用于linux)。代码的简化版本是:

from multiprocessing import Process, Queue

class Client( Process ):
    def __init__( self, q ):
        super( Client, self ).__init__()
        self._q = q

    def run( self ):
        self.startClient()

    def startClient( self ):
        self._q.put( 'abc' )

class Other( object ):
    def start( self ):
        self.q = Queue()
        self.client = Client( self.q )
        self.client.start()

启动进程(客户端)不会导致调用'run'(因此调用startClient)。

我知道一个简单的解决方案是使用主入口点(如果__name__ =='__main__':),但这是较大程序的一部分,不能通过该条目访问点。

还有其他方法可以在Windows上运行吗?

1 个答案:

答案 0 :(得分:0)

如果主模块没有使用if __name__ == '__main__':并且您不想更改它,请创建一个新的主模块,像这样导入旧的main,并通过运行新的main来启动应用程序: p>

if __name__ == '__main__':
    import main_module