Doc*_* Pi 5 python parallel-processing return-value multiprocessing joblib
我使用 joblib 来并行化一个函数(使用多处理)。但是,这个函数返回 4 个值,但是当我从 Parallel 得到结果时,它只给了我 3 个值
from joblib import Parallel, delayed
import numpy as np
from array import array
import time
def best_power_strategy():
powerLoc = {0}
speedLoc = {1}
timeLoc = {2}
previousSpeedLoc = {3}
return powerLoc,speedLoc,timeLoc,previousSpeedLoc
if __name__ == "__main__":
realRiderName=['Rider 1', 'Rider 2', 'Rider 3']
powerLoc = {}
speedLoc = {}
timeLoc = {}
previousSpeedLoc = {}
powerLoc,speedLoc,timeLoc,previousSpeedLoc = Parallel(n_jobs=3)(delayed(best_power_strategy)() for rider in realRiderName)
print(powerLoc)
print(speedLoc)
print(timeLoc)
print(previousSpeedLoc)
Run Code Online (Sandbox Code Playgroud)
结果是:
ValueError: not enough values to unpack (expected 4, got 3)
Run Code Online (Sandbox Code Playgroud)
有人有想法吗?
提前致谢
如果要将结果存储在四个单独的名称中,可以将生成器中的结果压缩在一起,然后将它们扩展为所需的名称,即:
# shortening the names for simplicity/readability
riders = ["Rider 1", "Rider 2", "Rider 3"]
p, s, t, pv = zip(*Parallel(n_jobs=3)(delayed(best_power_strategy)() for r in riders))
Run Code Online (Sandbox Code Playgroud)
这将导致p包含所有powerLoc结果,s包含所有speedLoc结果等等......
现在,鉴于您的best_power_strategy功能基本上是静态的并且没有任何变化(您甚至没有向它发送骑手),这段代码非常无用,因为您将始终获得相同的结果,但我认为您正在使用它这只是一个例子。
好的,我已经解决了问题:
from joblib import Parallel, delayed
import numpy as np
from array import array
import time
def best_power_strategy():
powerLoc = {0}
speedLoc = {1}
timeLoc = {2}
previousSpeedLoc = {3}
return powerLoc,speedLoc,timeLoc,previousSpeedLoc
if __name__ == "__main__":
realRiderName=['Rider 1', 'Rider 2', 'Rider 3']
powerLoc = {}
speedLoc = {}
timeLoc = {}
previousSpeedLoc = {}
res = Parallel(n_jobs=3)(delayed(best_power_strategy)() for rider in realRiderName)
powerLoc=[item[0] for item in res]
speedLoc=[item[1] for item in res]
timeLoc=[item[2] for item in res]
previousSpeedLoc=[item[3] for item in res]
print(powerLoc)
print(speedLoc)
print(timeLoc)
print(previousSpeedLoc)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6542 次 |
| 最近记录: |