Python multiprocessing.Pool map()“TypeError:字符串索引必须是整数,而不是 str”

2024-04-01

我正在尝试使用 multiprocessing.Pool 对字典列表进行并行处理。下面是一个例子

(请注意:这是一个玩具示例,我的实际示例将对实际字典中的值进行 CPU 密集型处理)

import multiprocessing

my_list = [{'letter': 'a'}, {'letter': 'b'}, {'letter': 'c'}]

def process_list(list_elements):
    ret_list = []
    for my_dict in list_elements:
        ret_list.append(my_dict['letter'])
    return ret_list

if __name__ == "__main__":
    pool = multiprocessing.Pool()
    letters = pool.map(process_list, my_list)
    print letters

如果我运行上面的代码,我会收到以下错误:

Traceback (most recent call last):
  File "multiprocess_fail.py", line 13, in <module>
    letters = pool.map(process_list, my_list)
  File "/usr/lib/python2.7/multiprocessing/pool.py", line 250, in map
    return self.map_async(func, iterable, chunksize).get()
  File "/usr/lib/python2.7/multiprocessing/pool.py", line 554, in get
    raise self._value
TypeError: string indices must be integers, not str

我不知道它指的是什么字符串索引。不应该pool.map只是迭代中的项目my_list(即字典)?我是否必须更改数据传递给地图函数的方式才能使其运行?


pool.map()接受一个可调用对象和一个可迭代对象,然后继续将可调用对象应用于中的每个元素iterable。它将把工作分成块分配给池工作人员,但该函数只会被传递one一次元素。

你传入了一个字典列表,这意味着每个process_list()已通过one字典:

process_list({'letter': 'a'})
process_list({'letter': 'b'})
# etc.

然而,您的代码正在处理list_elements作为一个列表。这for loop:

for my_dict in list_elements:

相反,看到字典键,每个my_dict一次绑定到一个键。对于你的字典来说,这意味着有一次迭代,并且my_dict被设定为'letter'每一次。该行:

my_dict['letter']

然后尝试索引该字符串,并且'letter'['letter']抛出您看到的异常。

以下作品:

def process_list(list_element):
    return list_element['letter']

你会回来one结果;map()将所有结果收集到一个新列表中,并在所有工作人员完成后返回该列表。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python multiprocessing.Pool map()“TypeError:字符串索引必须是整数,而不是 str” 的相关文章

随机推荐

  • 如何模糊匹配相邻单元格?

    我有一行 10 000 个名字 位于两个相应的列中 每列 10 000 个 A 列中的每个单元格对应于 B 列中的相邻单元格 我想进行模糊匹配 并获得所有单元格与相邻单元格的兼容性分数 我不希望它搜索整个列与整个列 只搜索相邻的单元格 我似
  • 在哪里下载signcode.exe和其他工具

    如果您决定签署代码 您将需要 签名代码 exe 生成证书文件 cert2spc exe pvk2pfx exe 下载这些工具的最佳位置是哪里 有没有办法在不下载大量 Microsoft Windows SDK 的情况下执行此操作 从视窗软件
  • AWS elemental mediaconvert 自动旋转视频?

    我正在使用 AWS elemental media Convert 将 mp4 视频转换为 HLS 一切正常 但输出视频旋转了 90 度 是否有一个设置可以用来阻止这种情况发生 我正在 iPhone 上拍摄视频 Under 输入 gt 视频
  • 如何制作顶部有锯齿边缘的 TileGroup 布局?

    我有包含按钮的spark components TileGroup 我希望按钮像选项卡一样出现在它们所服务的 ViewStack 顶部 目前 如果我在 TileList 中有 6 个项目 它会将其布局为 2 行 其中 4 个项目位于顶部拖曳
  • HTML5 视频的多个音轨

    我正在使用 HTML5 为我的网站制作视频 理想情况下 我只有一个无声视频文件 以及与视频同步的不同语言的五个不同音轨 然后我会有一个按钮 允许用户在音轨之间切换 甚至在视频播放时也是如此 正确的音轨就会出现 视频不会暂停或重新开始或任何其
  • 使用 Passport.js 进行动态失败重定向

    这是我的atm登录功能 app post login passport authenticate local failureRedirect login error 1 function req res res redirect req b
  • Firebase 聊天应用程序 setValue 公共数据库失败错误?

    我有一个使用 Firebase 的聊天应用程序 它一直有 x 处的 setValue 失败 数据库错误 权限被拒绝 每次我输入消息时都会出错 我已经将数据库设置为公开 service cloud firestore match databa
  • Python:查找列表元素之间的差异

    给定一个数字列表 如何找到每个 i 个元素及其 i 1 th 最好使用lambda表达式或者列表理解 例如 给定一个列表t 1 3 6 目标是找到一个列表v 2 3 因为3 1 2 6 3 3 etc gt gt gt t 1 3 6 gt
  • Pandas groupby 与 sklearn 预处理相结合

    我想按特定列对 DataFrame 进行分组 然后应用 sklearn 预处理 MinMaxScaler 并存储缩放器对象 我目前的出发点 import pandas as pd from sklearn import preprocess
  • OSX:安装 python 包时出错

    目前 由于 gcc 4 0 错误 我无法安装任何 Python 包 我将复制我收到的错误的两个示例 其中一个带有pip 另一个使用手动 setup py 构建 安装方法 sgarza62 pip install PIL Downloadin
  • 如何在 Cocoa AppKit 应用程序中实现缩放/缩放

    如何在 Cocoa AppKit 应用程序中实现缩放 缩放 即不最大化窗口 而是缩放窗口及其所有子视图 我认为它在 iOS 中称为 zoomScale 可以使用 Core Animations 或 Quartz 2D 来完成吗 例如CGCo
  • 在 Eclipse ide 中找不到 Scala 主类

    我为 eclipse 安装了 scala 和 scala IDE 每次我尝试编译一个简单的 HelloWorld 时 我都会收到此消息 package asd object testobject def main args Array St
  • 如何在角度2中使用自定义http刷新访问令牌?

    我在我的应用程序中使用基于令牌的身份验证 我的后端是使用restful服务 spring 开发的 后端代码很好地生成了所需的访问令牌和带有时间线的刷新令牌 所以我用以下内容覆盖了http类 export class customHttp e
  • 球拍、包含、要求和提供不起作用

    我有一个名为 functions rkt 的文件 其中有一些函数 我正在另一个文件中工作 我们将其命名为 working rkt 我在 working rkt 中尝试了以下操作 一一 来使用 functions rkt 中定义的函数 req
  • 如何使用 System.IO.Stream 和 LINQ 读取 XML 文件

    我将像这样传递 xml 文件 File1 PostedFile InputStream reading xml file public static void readXMLOutput Stream stream System Xml L
  • TypeScript :具有原始类型约束的通用类型

    我在 TypeScript 中有以下通用类 type UserId number type Primitive string number boolean class ColumnValue
  • 如何在角度单元测试中模拟 location.path

    http blog artlogic com 2013 05 06 angularjs best practices ive been doing it wrong part 2 of 3 http blog artlogic com 20
  • Windows 上的 Qt QMYSQL“驱动程序未加载”

    当尝试连接到 mysql 数据库时 我收到以下错误 驱动程序未加载 我已经创建了一个安装程序 其中包含所有需要的 DLL 文件 libmysql dll plugins qsqlmysql dll QT5Sql 等 在新安装的 Window
  • 如何从 1 更新 id 集?

    我有一个id即主键和自增 是否有任何疑问可以更新我现有的id并让我的id从 1 开始 下一个 id 2 等等 例如 id name 3 ABC 5 XYZ 9 PQR NOTE id已经是主要的并且自动增量 我不想截断我的 id 如果可能的
  • Python multiprocessing.Pool map()“TypeError:字符串索引必须是整数,而不是 str”

    我正在尝试使用 multiprocessing Pool 对字典列表进行并行处理 下面是一个例子 请注意 这是一个玩具示例 我的实际示例将对实际字典中的值进行 CPU 密集型处理 import multiprocessing my list