Python 中的池处理出现索引超出范围错误

问题描述 投票:0回答:1

我正在运行下面的简单代码来访问全局变量并使用多重处理操作内容,但即使存在索引元素,它给出的列表索引也超出范围

import time
from multiprocessing import Pool

testarr=[]
def initFunction(length=100000) :
    for i in range(0,length):
        print("*****"+str(i))
        testarr.append({"value":str(i),"flag":0})

def checkForEvenAtIndex(index=0):
    print(str(index))
    if int(testarr[index]["value"])%2==0:
        testarr[index]["flag"]=1


if __name__ == '__main__':
    start = time.time()
    #print(start)
    cpu = 4
    length =100000
    initFunction(length)
    with Pool(cpu) as pool:
        print(pool.map(checkForEvenAtIndex,range(0,length)))
    end = time.time()
    print('Total time taken *****'+str(end - start))

确切错误:

    if int(testarr[index]["value"])%2==0:
           ~~~~~~~^^^^^^^
IndexError: list index out of range

“”“

对我来说似乎缺乏Python知识。我来自 C++ 背景。请帮忙。总是给出错误的确切索引是 93750 (这可能是错误的。但是在打印这个之后,它失败了)

python multiprocessing
1个回答
0
投票

您使用的Python版本是什么? 在此在线 Python IDE 中,代码似乎在 Python3.8 中运行没有问题https://www.online-python.com/?

© www.soinside.com 2019 - 2024. All rights reserved.