代码之家  ›  专栏  ›  技术社区  ›  Fragsworth

分析python多处理池

  •  9
  • Fragsworth  · 技术社区  · 17 年前

    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
    

    1 回复  |  直到 17 年前
        1
  •  6
  •   Cat Plus Plus    17 年前

    试试这个:

    def square_wrapper(i):
        result = [None]
        cProfile.runctx("result[0] = square(i)", globals(), locals(), "file_%d" % i)
        return result[0]