如何调试Python多处理pool.map()错误(IndexError:字符串索引超出范围)没有堆栈跟踪?

时间:2014-09-22 12:33:34

标签: python multiprocessing

在python中使用多处理lib中的pool.map()。收到以下错误:

IndexError: string index out of range

这是否可能来自超出范围的变量(列表)?如果是这样我该怎么调试呢?没有解释错误发生的位置。

代码的更多解释:

(编辑)

def myFunction(list):
     # function contents
     for item in list:
          # do tasks
with closing(Pool(processes=2)) as pool:
     pool.map(myFunction, sublist)
     pool.map(myFunction2, sublist2)

1 个答案:

答案 0 :(得分:4)

答案在于我对pool.map(func, iterable)方法的误解。

上一个函数myFunction()使用for循环遍历列表对象。在实现pool.map()之后我把它留在了函数中,所以我精心准备的所有任务由于for循环而更深入了另一层。

解决方案是一个简单的例子,删除for循环并调整一些代码看起来更像这样:

def myFunction(list):
    # do tasks
    # for loop contents....

这么简单,但是我没有意识到首先应该如何使用.map()方法。感谢@dano指出需要查看的内容。