main.py のクラス メソッドを呼び出す jobrunner.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()