我有一个名为 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, args=("1",))
p1.start()
p2.start()
p1.join()
p2.join()
在 OSX 和 Ubuntu 上调用进程 _a 和 _b 没有任何问题,但是当我尝试在 Windows(相同版本的 python 和所有版本)上运行相同的东西时,它没有说索引超出范围。这使我相信“全局”变量 BBOX 没有在 Windows 平台上的模块之间设置或传递。有没有其他人看到过这样的事情并知道如何解决它?
亚当
更新:我想通了,即使它可能是一个完全的黑客......见下文!
# 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,180,-90,90'
BBOX.append(world.split(','))
p1 = Process(target=_a, args=(BBOX[0],))
p2 = Process(target=_b, args=(BBOX[0],))
p1.start()
p2.start()
p1.join()
p2.join()