У меня есть скрипт с именем 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()
Процессы _a и _b без проблем запускаются в OSX и Ubuntu, но когда я пытаюсь запустить одно и то же в 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()