【发布时间】:2020-12-13 21:35:22
【问题描述】:
我有一个如下的python代码:
import numpy as np
import multiprocessing as mp
def func(first, sec):
results = []
for x in range(first):
result_dict = {"a": x, "b": x**sec, "c": x/sec}
results.append(result_dict.copy())
return results
with mp.Pool(mp.cpu_count()) as pool:
res = pool.starmap(func, [(a, 8) for a in range(1, 4)])
然后我用这段代码将res 展平:
res = np.asarray(res)
res = res.reshape(-1)
res = np.array(res).tolist()
之后,当我打印 res 时,输出如下:
[[{'a': 0, 'b': 0, 'c': 0.0}],
[{'a': 0, 'b': 0, 'c': 0.0}, {'a': 1, 'b': 1, 'c': 0.125}],
[{'a': 0, 'b': 0, 'c': 0.0},
{'a': 1, 'b': 1, 'c': 0.125},
{'a': 2, 'b': 256, 'c': 0.25}]]
但我希望输出是这样的:
[{'a': 0, 'b': 0, 'c': 0.0},
{'a': 0, 'b': 0, 'c': 0.0},
{'a': 1, 'b': 1, 'c': 0.125},
{'a': 0, 'b': 0, 'c': 0.0},
{'a': 1, 'b': 1, 'c': 0.125},
{'a': 2, 'b': 256, 'c': 0.25}]
您知道如何更改代码以获得res 所需的结果吗?
【问题讨论】:
-
from itertools import chain; list(chain(*t))