Profilowanie puli wieloprocesowej Pythona

Usiłuję uruchomić cProfile.runctx () na każdym procesie w puli wieloprocesorowej, aby dowiedzieć się, jakie wąskie gardła w wielu procesach są w moim źródle. Oto uproszczony przykład tego, co próbuję zrobić:

from multiprocessing import Pool
import cProfile

def square(i):
    return i*i

def square_wrapper(i):
    cProfile.runctx("result = square(i)",
        globals(), locals(), "file_"+str(i))
    # NameError happens here - 'result' is not defined.
    return result

if __name__ == "__main__":
    pool = Pool(8)
    results = pool.map_async(square_wrapper, range(15)).get(99999)
    print results

Niestety, próba wykonania „wyniku = kwadrat (i)” w profilerze nie wpływa na „wynik” w zakresie, z którego został wywołany. Jak mogę osiągnąć to, co próbuję tutaj zrobić?

questionAnswers(1)

yourAnswerToTheQuestion