繁体   English   中英

如何在没有堆栈跟踪的情况下调试Python Multiprocessing pool.map()错误(IndexError:字符串索引超出范围)?

[英]How to debug Python Multiprocessing pool.map() error (IndexError: string index out of range) without a stack trace?

在python中从multiprocessing 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)

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

先前的函数myFunction()使用for循环在列表对象中循环。 在实现pool.map()之后,我将该函数留在了函数中,因此由于for循环,我精心准备的所有任务都将更进一步。

解决方案是删除for循环并调整一些代码使其更像这样的简单情况:

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM