Les processus multiples ne peuvent pas partager de variables globales | Premiers pas avec Python, épisode 106
Tags associés : 1.ApsaraDB RDS for MySQL
2. Prototypes et héritage en JavaScript
Les processus multiples ne peuvent pas partager de variables globales | Premiers pas avec Python, épisode 106
Les processus multiples ne peuvent pas partager de variables globales. Deux threads enfants dans le même processus principal. Les threads peuvent partager les variables globales d'un même processus, tandis que les différents processus conservent chacun leur propre variable globale sans les partager.
Les processus multiples ne peuvent pas partager de variables globales
import os , multiprocessing, threading
n = 100
def test () :
global n
n += 1
print( The value of n in 'test===={} is {}' .format( os.getpid (), hex(id(n))))
def demo () :
global n
n += 1
print( The value of n in 'demo===={} is {}' .format( os.getpid (), hex(id(n))))
print( threading.current_thread ().name)
test() # 101
demo() # 102
# Deux threads enfants dans le même processus principal. Les threads peuvent partager les variables globales d'un même processus

# t1 = threading.Thread (target=test)
# t2 = threading.Thread (target=demo)
# t1.start()
# t2.start()
# if __name__ == '__main__':
# Chaque processus conserve sa propre variable globale sans les partager
# p1 = multiprocessing.Process (target=test)
# p2 = multiprocessing.Process (target=demo)
# p1.start() # 101
# p2.start() # 101
Exemple :
from multiprocessing import Process
import os
nums = [ 11 , 22 ]
def work1 () :
"""Le code à exécuter par le processus enfant"""
print( "in process1 pid =%d , nums =%s" %( os.getpid (), nums ))
for i in range( 3 ):
nums.append ( i )
print( "in process1 pid =%d , nums =%s" %( os.getpid (), nums ))
def work2 () :
"""Le code à exécuter par le processus enfant"""
nums.pop ()
print( "in process2 pid =%d , nums =%s" %( os.getpid (), nums ))
if __name__ == '__main__':
p1 = Process(target=work1)
p1.start()
p1.join()
p2 = Process(target=work2)
p2.start()
print('in process0 pid={} ,nums={}'.format(os.getpid(),nums))
Résultat d'exécution :
in process1 pid=2707 ,nums=[11, 22]
in process1 pid=2707 ,nums=[11, 22, 0]
in process1 pid=2707 ,nums=[11, 22, 0, 1]
in process1 pid=2707 ,nums=[11, 22, 0, 1, 2]
in process0 pid=2706 ,nums=[11, 22]
in process2 pid=2708 ,nums=[11]
2. Prototypes et héritage en JavaScript
Les processus multiples ne peuvent pas partager de variables globales | Premiers pas avec Python, épisode 106
Les processus multiples ne peuvent pas partager de variables globales. Deux threads enfants dans le même processus principal. Les threads peuvent partager les variables globales d'un même processus, tandis que les différents processus conservent chacun leur propre variable globale sans les partager.
Les processus multiples ne peuvent pas partager de variables globales
import os , multiprocessing, threading
n = 100
def test () :
global n
n += 1
print( The value of n in 'test===={} is {}' .format( os.getpid (), hex(id(n))))
def demo () :
global n
n += 1
print( The value of n in 'demo===={} is {}' .format( os.getpid (), hex(id(n))))
print( threading.current_thread ().name)
test() # 101
demo() # 102
# Deux threads enfants dans le même processus principal. Les threads peuvent partager les variables globales d'un même processus

# t1 = threading.Thread (target=test)
# t2 = threading.Thread (target=demo)
# t1.start()
# t2.start()
# if __name__ == '__main__':
# Chaque processus conserve sa propre variable globale sans les partager
# p1 = multiprocessing.Process (target=test)
# p2 = multiprocessing.Process (target=demo)
# p1.start() # 101
# p2.start() # 101
Exemple :
from multiprocessing import Process
import os
nums = [ 11 , 22 ]
def work1 () :
"""Le code à exécuter par le processus enfant"""
print( "in process1 pid =%d , nums =%s" %( os.getpid (), nums ))
for i in range( 3 ):
nums.append ( i )
print( "in process1 pid =%d , nums =%s" %( os.getpid (), nums ))
def work2 () :
"""Le code à exécuter par le processus enfant"""
nums.pop ()
print( "in process2 pid =%d , nums =%s" %( os.getpid (), nums ))
if __name__ == '__main__':
p1 = Process(target=work1)
p1.start()
p1.join()
p2 = Process(target=work2)
p2.start()
print('in process0 pid={} ,nums={}'.format(os.getpid(),nums))
Résultat d'exécution :
in process1 pid=2707 ,nums=[11, 22]
in process1 pid=2707 ,nums=[11, 22, 0]
in process1 pid=2707 ,nums=[11, 22, 0, 1]
in process1 pid=2707 ,nums=[11, 22, 0, 1, 2]
in process0 pid=2706 ,nums=[11, 22]
in process2 pid=2708 ,nums=[11]
Articles associés
-
6 technologies optionnelles pour le stockage de données
Équipe base de connaissances
Découvrir plus d'offres spéciales
-
Service de messages courts (SMS) et service de messagerie
50,000 email package starts as low as USD 1.99, 120 short messages start at only USD 1.00
