我正在运行一个程序,该程序使用队列来回发送信息来启动进程。我无法在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上运行吗?
答案 0 :(得分:0)
如果主模块没有使用if __name__ == '__main__':
并且您不想更改它,请创建一个新的主模块,像这样导入旧的main,并通过运行新的main来启动应用程序: p>
if __name__ == '__main__':
import main_module