Tengo un script llamado jobrunner.py que llama a los métodos de clase en main.py. Véase más abajo ...Python Multiproceso diff entre Windows y Linux
# 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()
Procesos _a y _b se invocan sin ningún tipo de problemas en OS X y Ubuntu, pero cuando trato de ejecutar el mismo que en Windows (misma versión de Python y todo), se produce un error diciendo que el índice está fuera de rango. Esto me lleva a creer que la variable "global" BBOX no se está configurando o transmitiendo entre módulos en la plataforma de Windows. ¿Alguien más ha visto algo como esto y sabe cómo solucionarlo?
Adam
ACTUALIZACIÓN: lo he descubierto a pesar de que podría ser un corte total de ... Ver más adelante!
# 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()
Gracias eso realmente me está llevando en la dirección correcta, sin embargo, tengo que pasar una lista a la memoria compartida. En este caso, será algo así como esta lista: [['57', '78', '23', '40']] que estoy configurando como BBOX. No hay ningún tipo_de_c para una lista hay? – aeupinhere