我正在运行一个程序,该程序启动一个进程,队列来回发送信息。我无法在 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__
':),但这是一个更大程序的一部分,不能通过该入口点访问。
有没有其他方法可以让它在窗口上工作?
如果主模块未使用if __name__ == '__main__':
并且您不想更改它,请创建一个新的主模块,像这样导入旧的主模块,并通过运行新的主模块来启动应用程序:
if __name__ == '__main__':
import main_module