【问题标题】:I can't get pool.map or pool.starmap to work the way I think it should我无法让 pool.map 或 pool.starmap 以我认为应该的方式工作
【发布时间】:2019-11-22 22:53:38
【问题描述】:

因此,在我的一生中,我无法弄清楚应该使用 pool.map() 或 pool.starmap() 的哪个组合来使这项工作如我所愿。下面的代码正确执行,触发(依次!)两个 runSim 实例并附加结果。

results = []
argsToRun = []

for n in range(2):
    random.seed()
    env = simpy.Environment()  # Create the SimPy environment
    env.clockRate = 1e9
    argsToRun.append([env, adist, sdist, tdist, 108, intSpeed, runUntil])

for arg_list in argsToRun:
    line = runSim(*arg_list)
    results.append(line)

我的印象是,类似下面的代码将是并行运行这些实例的一种简单方法(结果不依赖于顺序)......但它们似乎都不起作用。我肯定遗漏了一些明显的东西吗?

with multiprocessing.Pool() as pool:
    results = pool.map(runSim, argsToRun)
    pool.close()

也不...

with multiprocessing.Pool() as pool:
    results = pool.starmap(runSim, argsToRun)
    pool.close()

【问题讨论】:

    标签: parallel-processing python-multiprocessing


    【解决方案1】:

    经过大量的挫折和搜索,结果发现我的一些参数不可腌制。这与 VSCode 中的一个错误相结合,该错误阻止了调试器的运行,使得诊断比应有的困难得多。

    切换到 Pool() 的pathos versions 解决了这个问题。

    for n in range(15):
        random.seed()
        env = simpy.Environment()  # Create the SimPy environment
        argsToRun.append((env, adist, sdist, tdist, 108, intSpeed, runUntil))
    
    with pathos.helpers.mp.Pool as pool:   ## tada!
        results = pool.starmap(runSim, argsToRun)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-13
      • 1970-01-01
      • 2021-11-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多