Test.py
from multiprocessing import Process
from random import random
class Test:
def __init__(self):
self.val= 0.0
def func(self):
self.val=random()
print self.val
if __name__ == '__main__':
tests=[]
prcs= []
for i in range(2):
tests.append(Test())
prcs.append( Process(target=tests[i].func) )
for p in prcs:
p.start()
for p in prcs:
p.join()
for t in tests:
print t.val
Lorsque vous exécutez un tel programme,
$ python Test.py
0.577127051322
0.331891187398
0.0
0.0
Le résultat est. En d'autres termes, la valeur stockée dans self.val
à l'intérieur de la fonctionfunc () ʻest invalide après cela. D'autre part, ajoutez
()à la fonction passée à
Process`, c'est-à-dire
prcs.append( Process(target=tests[i].func()) )
Si vous le changez comme
$ python Test.py
0.872880584458
0.255770370005
0.872880584458
0.255770370005
La valeur self.val
affectée dans la fonction func
est stockée fermement comme indiqué dans.
Je ne comprends pas ce que cela veut dire. .. ..
Recommended Posts