Seite 1 von 1

Frage zu multiprocessing

Verfasst: Mittwoch 26. September 2012, 15:45
von patmaster
Hi,

Ich spiele mich gerade einwenig mit multiprocessing und habe da jetzt eine Frage.

Angenommen ich habe in einem py modul einige Methoden. Manche davon machen nur simple tasks wie etwas ausgeben, oder ein file unzipen, andere starten endloschleifen um sporadisch etwas zu prüfen.

zb(ich bin nicht gut in Beispiele ausdenken, bitte entschuldigt diese sinnlosen Snippets ^^):

Code: Alles auswählen


def check_something():
    while 1:
        check_folder("C:\dir1")
        time.sleep(60)

def check_something_else():
    while 1:
        check_file("C:\\file.xml")
        time.sleep(60)

def check_folder(path):
    if os.path.isdir(path):
        print("DIR EXISTS")

def check_file(path):
    if path[-3:] == "xml":
        print("XML FILE !")

process1 = multiprocessing.Process(target = check_something)
process2 = multiprocessing.Process(target = check_something_else)
process1.start()
process2.start()
Nun hätte man ja 2 Prozesse. Einer checkt ob es dir1 gibt, der andere ob das übergebene file ein xml file ist.

Nun rufen aber diese Prozesse jeweils Methoden aus dem "Hauptmodul" auf. Genau da habe ich eine Frage dazu.
Kommunizieren die beiden neuen Prozesse also mit dem Hauptprozess und rufen dort die funktionen auf, oder kriegt jeder neue Prozess das gesamte Modul in seinen Adressraum ?

Vielen Dank schon mal !

Re: Frage zu multiprocessing

Verfasst: Donnerstag 27. September 2012, 10:13
von patmaster
keiner eine Idee ?
Ich will nicht ungeduldig erscheinen nur geht das hier normalerweise sehr schnell und ich hoffe es liegt nich daran das die Frage doof gestellt, oder generell doof ist ?

Re: Frage zu multiprocessing

Verfasst: Donnerstag 27. September 2012, 19:46
von BlackJack
@patmaster: Die Kindprozesse laden die gleichen Module.

Re: Frage zu multiprocessing

Verfasst: Donnerstag 27. September 2012, 21:34
von patmaster
Ich nehme das heist also das jeder Kindprozess, das ganze Ding in seinen Speicher bekommt.
Alles klar, danke !