私はmain.pyのクラスメソッドを呼び出すjobrunner.pyというスクリプトを持っています。下記を参照してください...WindowsとLinuxの間のPythonマルチプロセスdiff
# 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プラットフォーム上のモジュール間で設定または渡されていないと考えています。他の誰かがこのようなことを見て、それを修正する方法を知っていますか?
アダム
UPDATE:私はそれは下記を参照してください...総ハックかもしれないにもかかわらず、それを考え出しました!
# 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()
本当に正しい方向に向かいますが、共有メモリにリストを渡す必要があります。この場合、私はBBOXとして設定している[['57'、 '78'、 '23'、 '40']]リストのようなものになります。リストにはc_typeはありません。 – aeupinhere