6
我有一個名爲jobrunner.py的腳本,它調用main.py中的類方法。見下文......Windows和Linux之間的Python多進程比較
# 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和所有),它沒有說任何指標調用問題超出範圍。這導致我相信在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,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()
謝謝,這真的讓我朝着正確的方向前進,但是,我需要將一個列表傳遞給共享內存。在這種情況下,它會是這樣的列表:[['57','78','23','40']],我將其設置爲BBOX。有一個列表沒有c_type嗎? – aeupinhere