Generally I'm aware of pickle mechanism, but can't understand why this example:
from multiprocessing import Pool
class Foo:
    attr = 'a class attr'
    def __test(self,x):
        print(x, self.attr)
    def test2(self):
       with Pool(4) as p:
          p.map(self.__test, [1,2,3,4])
if __name__ == '__main__':
    f = Foo()
    f.test2()
complains about __test method?
return _ForkingPickler.loads(res)
AttributeError: 'Foo' object has no attribute '__test'
After changing def __test to def _test(one underscore) everything works fine. Do I miss any basics knowledge of pickleing or "private" methods?
 
    