Ich schreibe ein Programm, das ein Modul mit einem Dateipfad importiert, mit der Funktion . Es scheint ein Problem zu verursachen, wenn ich versuche, Objekte von diesem Modul in eine Process
zu übergeben.Verwenden von Python-Multiprocessing beim Importieren eines Moduls über Dateipfad
Ein Beispiel:
import multiprocessing
import imp
class MyProcess(multiprocessing.Process):
def __init__(self,thing):
multiprocessing.Process.__init__(self)
self.thing=thing
def run(self):
x=self.thing
if __name__=="__main__":
module=imp.load_source('life', 'C:\\Documents and Settings\\User\\workspace\\GarlicSim\\src\\simulations\\life\\life.py')
thing=module.step
print(thing)
p=MyProcess(thing)
p.start()
Hinweis: für diesen Code „Arbeit“, die Parameter ersetzen muss ich mit etwas imp.load_source
gab anderes: Es hat einige Python-Datei auf Ihrem Computer, vorzugsweise nicht im selben Ordner. Dann, in thing=module.step
, anstelle von Schritt in eine zufällige Funktion oder Klasse, die in dieser .py
Datei definiert ist.
ich folgende Zurückverfolgungs bin immer:
<function step at 0x00D5B030>
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "C:\Python26\lib\multiprocessing\forking.py", line 342, in main
self = load(from_parent)
File "C:\Python26\lib\pickle.py", line 1370, in load
return Unpickler(file).load()
File "C:\Python26\lib\pickle.py", line 858, in load
dispatch[key](self)
File "C:\Python26\lib\pickle.py", line 1090, in load_global
klass = self.find_class(module, name)
File "C:\Python26\lib\pickle.py", line 1124, in find_class
__import__(module)
ImportError: No module named life
Also, was soll ich tun?
EDIT:
Ich verwende Python 2.6.2c1 auf Win XP.
ich Ihren Code kopiert, nur ' '/ tmp/life.py'' auf'' tmp \\ life.py'' ändern, (ich bin auf Windows XP.) erhalte ich eine Zurückverfolgungs was ich denke, ist das gleiche wie das in meiner Frage, mit diesem "Gurke" -Modul am Ende. Vielleicht passiert es nur unter Windows? (Hinweis: Ich benutze Python 2.6.2c1) –
Verwenden von Ubuntu Jaunty 9.04 mit Standard-Python (Python 2.6.2 Release26-Maint, 19. April 2009, 01:56:41). Ich weiß nicht, ob es nur Windows gibt, ich habe keine Windows zum Testen. Beachten Sie, dass Sie die Schrägstriche/tmp/life.py auch für Windows verwenden können, ohne dass dies in umgekehrte Schrägstriche geändert werden muss. – nosklo