gpt4 book ai didi

python - multiprocessing.pool.map 是否删除映射对象?

转载 作者:太空宇宙 更新时间:2023-11-03 21:04:28 26 4
gpt4 key购买 nike

当我将 multiprocessing.pool.map 应用于 list 对象时,list 对象不会受到影响:

from multiprocessing import Pool

def identity(x):
return x

num_list = list(range(0, 10))

print("before multiprocessing:")
with Pool(10) as p:
print(p.map(identity, num_list))

print("after multiprocessing:")
print(list(num_list))

打印

before multiprocessing:
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
after multiprocessing:
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

但是当我在 map 对象上应用 multiprocessing.pool.map 时,它似乎被删除了:

from multiprocessing import Pool

def identity(x):
return x

num_list = list(range(0, 10))
num_list = map(identity, num_list)

print("before multiprocessing:")
with Pool(10) as p:
print(p.map(identity, num_list))

print("after multiprocessing:")
print(list(num_list))

打印

before multiprocessing:
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
after multiprocessing:
[]

唯一的区别是num_list = map(identity, num_list)

num_list(映射对象)是否被multiprocessing.pool.map删除了?

我对此不确定,但我找不到其他解释。

最佳答案

map函数返回一个迭代器,在p.map()遍历完map的最后一个元素后obj,再次访问map obj时不会返回任何内容。这就是迭代器的特点

关于python - multiprocessing.pool.map 是否删除映射对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55515360/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com