Ich habe gerade Python Multiprocessing für das Lesen der Datei oder eine globale Variable getestet, aber es ist etwas seltsam passieren.Etwas seltsames passiert mit Python Multiprozess
Um zB:
import multiprocessing
a = 0
def test(lock, name):
global a
with lock:
for i in range(10):
a = a + 1
print "in process %d : %d" % (name, a)
def main():
lock = multiprocessing.Lock()
p1 = multiprocessing.Process(target=test, args=(lock, 1))
p2 = multiprocessing.Process(target=test, args=(lock, 2))
p1.start()
p2.start()
p1.join()
p2.join()
print "in main process : %d" % a
if __name__=='__main__':
main()
Das Programm lesen eine globale Variable, aber die Ausgabe ist:
in process 1 : 10
in process 2 : 10
in main process : 0
Es scheint, dass der Unterprozess nicht richtig die globale Variable erhalten und bearbeiten können. Wenn ich das Programm zum Lesen der Datei ändere, liest jeder Unterprozess die Datei vollständig und ignoriert die Sperre.
Also, wie passieren diese? Und wie löst man dieses Problem?
Ich glaube, dass Sie den globalen Zustand mit einem 'multiprocessing.Manager' müssen verwalten – mgilson
Sie verwenden könnten Multithreading statt Multiprocessing für die gleichzeitige Ausführung. Alle Threads sind Teil eines einzelnen Prozesses. – VPfB