als Python-Anfänger stolper ich immer wieder über vermeintlich banale Probleme wie das Folgende.
Ich benutze die library mpi4py um mein script zu parallelisieren. Zum Glück ist die library relativ benutzerfreundlich und auch gut dokumentiert. Leider nutzt sie (wie ich das verstanden habe) 'pickle' für die Kommunikation zwischen den Prozessoren. Nun ist es jedoch so, dass sich nur bestimmte Datentypen 'picklen' lassen. Ein Workaround um z.B. Funktionen zu verschicken habe ich bereits auf stackoverflow gefunden. Leider habe ich das nicht so richtig verstanden und zum Thema module verschicken gibt es gar nichts im Netz. Um mein Problem zu veranschaulichen, hier ein kleines Beispiel:
Code: Alles auswählen
from mpi4py import MPI
from tvtk.api import tvtk
from mayavi import mlab
comm=MPI.COMM_WORLD
size=comm.Get_size()
rank=comm.Get_rank()
if rank==0:
from tvtk.api import tvtk
from mayavi import mlab
if __name__=='__main__':
mlab=comm.bcast(mlab,root=0)
Code: Alles auswählen
cPickle.PicklingError: Can't pickle <type 'module'>: attribute lookup __builtin__.module failed