Frage zu multiprocessing

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
patmaster
User
Beiträge: 106
Registriert: Donnerstag 3. Februar 2011, 17:21

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 !
patmaster
User
Beiträge: 106
Registriert: Donnerstag 3. Februar 2011, 17:21

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 ?
BlackJack

@patmaster: Die Kindprozesse laden die gleichen Module.
patmaster
User
Beiträge: 106
Registriert: Donnerstag 3. Februar 2011, 17:21

Ich nehme das heist also das jeder Kindprozess, das ganze Ding in seinen Speicher bekommt.
Alles klar, danke !
Antworten