Das altbekannte Pickelproblem unter Windows

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
anogayales
User
Beiträge: 456
Registriert: Mittwoch 15. April 2009, 14:11

Hallo liebe Community,

ich bin auf ein Problem gestoßen, das wahrscheinlich schon des öfteren gelöst wurde. Nun benötige ich eure Hilfe. Ich habe eine Klasse, die das multiprocessing Modul verwendet. In dieser Klasse wird eine anonyme Funktion definiert und als target registriert. Hier der entsprechende Codeauszug:

Code: Alles auswählen

                def reader():
                        while True:
                                packet = self._collect()
                                if self._reader_end.poll():
                                        self._reader_end.recv()
                                        self._reader_end.send(packet)

                self._reader = multiprocessing.Process(target = reader)
Beim Pickeln gibt es nun aber Probleme. Ich bekomm die Fehlermeldung, dass die Funktion nicht gepickelt werden kann, da sie nicht unter Klassenname.reader gefunden werden kann. Auch wenn ich die Funktion unter dem angegeben Name hinterlege bekomme ich ein EOFError.

Code: Alles auswählen

pickle.PicklingError: Can't pickle : it's not found as Klassenname.reader
Grüße,
anogayales
BlackJack

@anogayales: Das sollte unabhängig von Windows sein. Pickle serialisiert keine Code-Objekte sondern nur den Namen. Das bedeutet unter dem Namen muss beim entpicklen dann auch wieder ein Funktionsobjekt existieren.
Antworten