from multiprocessing import Pool def wrap_worker(passthru): return passthru.worker() class Result(object): def __init__(self, something): self.something = something class Thing(object): Result = Result def worker(self): return self.Result(1) def master(self, pool): async_result = pool.apply_async(wrap_worker, args=(self,)) return async_result class DerivedThing(Thing): pass if __name__ == '__main__': pool = Pool(4) dt = DerivedThing() async_result = dt.master(pool) result = async_result.get() pool.close() print result, result.something