2015-04-30 13 views
6

Korzystanie Python 2.7,Jak zmienić serializer, który moja podklasa multiprocessing.mangers.BaseManager używa do cPickle?

ja przechodząc wiele dużych obiektów w całej procesach wykorzystujących menedżera pochodzący z multiprocessing.managers. BaseManager i chciałbym użyć cPickle jako serializera, aby zaoszczędzić czas; jak to zrobić? Widzę, że inicjator BaseManager pobiera argument serializer, ale jedynymi opcjami wydają się być pickle i xmlrpclib.

Odpowiedz

2

Wygląda na to, że nie możesz zrobić dokładnie tego, o co pytasz.

W rzeczywistości istnieje wideokonferencja, pathos, napisana przez twórców alternatywy dla marynowania, dill - również z powodu ograniczonej możliwości sterowania serializerem.

Osobiście sugeruję używanie ipython.parallel, ponieważ wygląda na bardziej aktywnie obsługiwany.

Zobacz więcej szczegółów na ten temat w tym artykule Parallelism and Serialization.

1

Jestem autorem kopru i patosu. Wieloprocesorowość powinna domyślnie używać cPickle, więc nie powinieneś nic robić.

Jeśli Twój obiekt nie wyszukuje, masz dwie opcje: przejdź do rozwidlenia wieloprocesowego lub innego równoległego zaplecza lub dodaj metody do swojej klasy (tj. Metody redukcji), które rejestrują sposób serializacji obiektu.

Powiązane problemy