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
Wenn Sie ein solches Programm ausführen,
$ python Test.py
0.577127051322
0.331891187398
0.0
0.0
Das Ergebnis ist. Mit anderen Worten, der in self.val
in der Funktion func ()
gespeicherte Wert ist danach ungültig.
Fügen Sie andererseits "()" zu der an "Process" übergebenen Funktion hinzu, d. H.
prcs.append( Process(target=tests[i].func()) )
Wenn Sie es gerne ändern
$ python Test.py
0.872880584458
0.255770370005
0.872880584458
0.255770370005
Der in der Funktion func
zugewiesene Wert self.val
wird wie in gespeichert.
Ich verstehe nicht, was das bedeutet. .. ..
Recommended Posts