J'ai un script appelé jobrunner.py qui appelle les méthodes de classe dans main.py. Voir ci-dessous ...Python Multiprocess diff entre Windows et 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()
processus _A et _b sont invoquées sans aucun problème sur Mac OS X et Ubuntu, mais lorsque je tente d'exécuter la même chose sous Windows (même version de python et tout), il ne parvient en disant que l'indice est hors de portée. Cela m'amène à croire que la variable "globale" BBOX n'est pas définie ou transmise entre les modules sur la plate-forme Windows. Est-ce que quelqu'un d'autre a vu quelque chose comme ça et sait comment le réparer?
Adam
MISE À JOUR: I figured it out, même si elle est peut-être un hack total de ... Voir ci-dessous!
# 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()
Merci, c'est vraiment aller dans la bonne direction, cependant, j'ai besoin de passer une liste dans la mémoire partagée. Dans ce cas, ce sera quelque chose comme cette liste: [['57', '78', '23', '40']] que je définis comme BBOX. Il n'y a pas de c_type pour une liste est là? – aeupinhere