iferença do multiprocesso Python entre Windows e Linux
Eu tenho um script chamado jobrunner.py que chama métodos de classe em main.py. Ver abaixo..
# 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()
Processes _a e _b são invocados sem problemas no OSX e Ubuntu, mas quando tento executar a mesma coisa no Windows (mesma versão do python e tudo), falha ao dizer que o índice está fora do alcance. Isso me leva a acreditar que a variável "global" BBOX não está sendo definida ou passada entre os módulos na plataforma Windows. Alguém já viu algo assim e sabe como consertá-lo?
Adã
ATUALIZAR Eu descobri isso mesmo que possa ser um hack total ... Veja abaix
# 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()