gpt4 book ai didi

python - 值错误 : too many values to unpack Multiprocessing Pool

转载 作者:行者123 更新时间:2023-12-05 01:01:53 24 4
gpt4 key购买 nike

我有以下最初返回单个 JSON 对象的“ worker ”,但我希望它返回多个 JSON 对象:

def data_worker(data):
_cats, index, total = data
_breeds = {}

try:
url = _channels['feedUrl']
r = get(url, timeout=5)
rss = etree.XML(r.content)

tags = rss.xpath('//cats/item')
_cats['breeds'] = {}
for t in tags:
_cats['breeds']["".join(t.xpath('breed/@url'))] = True
_breeds['url'] = "".join(t.xpath('breed/@url'))

return [_cats, _breeds]
except:
return [_cats, _breeds]

这个worker是一个多处理池的参数:

cats, breeds = pool.map(data_worker, data, chunksize=1)

当我只使用一个输出(即 _cats)运行池和工作程序时,它工作得很好,但是当我尝试返回多个 JSON“模式”时,我收到错误:

  File "crawl.py", line 111, in addFeedData
[cats, breeds] = pool.map(data_worker, data, chunksize=1)
ValueError: too many values to unpack

如何在 data_worker 中返回 2 个单独的 JSON 对象?我需要它们是单独的 JSON 对象。请注意,我已经尝试了以下方法,但没有成功:

[cats, breeds] = pool.map(data_worker, data, chunksize=1)
(cats, breeds) = pool.map(data_worker, data, chunksize=1)
return (_cats, _breeds)

最佳答案

首先,我认为你的意思是这样写的:

cats, breeds = pool.map(data_worker, data, chunksize=1)

但无论如何这都行不通,因为 data_worker 返回一对,但 map() 返回工作人员返回的任何内容的列表。所以你应该这样做:

cats = []
breeds = []
for cat, breed in pool.map(data_worker, data, chunksize=1):
cats.append(cat)
breeds.append(breed)

这将为您提供您寻找的两个列表。

换句话说,您期望一对列表,但您得到了一对列表。

关于python - 值错误 : too many values to unpack Multiprocessing Pool,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39303117/

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