我有一个名为jobrunner.py的脚本,它调用main.py中的类方法.见下文…
# jobrunner.py from multiprocessing import Process import main from main import BBox def _a(arg): f = main.a() print f.run() def _b(arg): p = main.b() print p.run() if __name__ == '__main__': world = '-180,180,-90,90' BBox.append(world.split(',')) p1 = Process(target=_a,args=("1",)) p2 = Process(target=_b,)) p1.start() p2.start() p1.join() p2.join()
在OSX和Ubuntu上调用进程_a和_b没有任何问题,但是当我尝试在Windows上运行相同的东西(相同版本的python和all)时,它无法说索引超出范围.这让我相信在Windows平台上的模块之间没有设置或传递“全局”变量BBox.有没有其他人看到这样的东西,知道如何解决它?
亚当
更新:虽然它可能是一个彻底的黑客,但我想出来了……见下文!
# jobrunner.py from multiprocessing import Process import main from main import BBox def _a(arg): BBox.append(arg) #This is the key f = main.a() print f.run() def _b(arg): BBox.append(arg) #This is the key p = main.b() print p.run() if __name__ == '__main__': world = '-180,args=(BBox[0],)) p1.start() p2.start() p1.join() p2.join()