Ich muss sagen, dass Multiprozessing ist etwas Neues für mich. Ich lese etwas darüber, aber es macht mich mehr verwirrt. Ich möchte es an einem einfachen Beispiel verstehen. Nehmen wir an, wir haben zwei Funktionen in der ersten. Ich inkrementiere nur 'a' Variable und weise sie dann der Variablen 'number' zu, in Sekunde starte ich die erste Funktion und jede Sekunde will ich 'number' Variable ausgeben. Es sollte so aussehen:Parallele Multiprocessing in Python einfach Beispiel
global number
def what_number():
a=1
while True:
a+=1
number=a
def read_number():
while True:
--> #here I need to start 'what_number' function <--
time.sleep(1)
print(number)
if __name__ == "__main__":
read_number()
Wie kann ich das tun? Gibt es einen einfachen und richtigen Weg, das zu tun?
UPDATE:
Ich sah ich wirklich dankbar noxdafox zu beantworten bin, aber es ist nicht genau das, was ich will. Zuallererst möchte ich keinen Wert in der ersten Funktion senden ('main' in noxdafox code). Zweitens will ich nicht alle Werte bekommen, also wird es nicht funktionieren. Ich muss nach jeder zweiten Anzahl von While-Loops kommen. Code sollte so etwas wie:
import multiprocessing
import time
number = 0
def child_process():
global number
while True:
number += 1
print(number)
def main():
process = multiprocessing.Process(target=child_process)
process.start()
while True:
print("should get same number:",number)
time.sleep(0.001)
if __name__ == "__main__":
main()
Wenn u oben Code ausführen Sie bekommen so etwas wie:
aber diese blau ausgewählten Werte gleich sein sollte! und das ist das Hauptproblem :)
P. S sorry für Chaos
http://chriskiehl.com/article/parallelism-in-one-line/ – user45245
'global number'? – alfasin
Mögliches Duplikat von [multiprocessing.Pool: Wann verwenden Sie apply, wenden Sie \ _async oder map?] An (https://stackoverflow.com/questions/8533318/multiprocessing-pool-when-to-use-apply-apply-async Oder-Karte) – alfasin