J'essaie de définir une variable globale dans un processus et de la lire à partir d'un autre processus. C'est essentiellement ce que je fais:La variable globale a une valeur différente lorsqu'elle est appelée depuis une fonction différente
from multiprocessing import Process
import time
rocket = 0
def func1():
global rocket
while rocket < 10:
rocket += 1
print("Func1: " + str(rocket))
time.sleep(5)
def func2():
while rocket < 10:
print ("Func2: " + str(rocket))
time.sleep(1)
if __name__=='__main__':
p1 = Process(target = func1)
p1.start()
p2 = Process(target = func2)
p2.start()
Ce que je pense que ce code devrait faire:
- func1 augmente les « fusées » variable globale de 1 toutes les cinq secondes
- Chaque seconde Func2 lit les il
- fusées variables globales et imprime les deux méthodes PARALLÈLES jusqu'à ce que == 'fusées de 10
Ainsi, le résultat attendu devrait être quelque chose comme:
Func1: 1
Func2: 1
Func2: 1
Func2: 1
Func2: 1
Func2: 1
Func1: 2
Func2: 2
Func2: 2
#... and so on
Mais la sortie réelle va comme:
Func1: 1
Func2: 0
Func2: 0
Func2: 0
Func2: 0
Func2: 0
Func1: 2
Func2: 0
Func2: 0
#... and so on
Lors de l'impression des 'fusées' Func2 reste toujours 0
Je déclare ' fusées 'comme variable globale dans func1 as you should
Que manque-t-il ici?
double possible de [Python multitraitement mises à jour des variables globales ne est pas renvoyé] (https: //stackoverflow.com/questions/11055303/python-multiprocessing-global-variable-updates-not-returned-to-parent) –