TypeError:'int'对象不可迭代-使用POOL进行多重处理

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了TypeError:'int'对象不可迭代-使用POOL进行多重处理相关的知识,希望对你有一定的参考价值。

我正在尝试读取csv文件并查找列的平均值。无法破解池多处理部分!继续为多重处理部分提供错误。串行处理正常!

import os
from multiprocessing import Pool
import pandas as pd
import time
import statistics
    def average(listed_marks):
        avg=[]
        i=[]
        for i in listed_marks:
            avg.append(statistics.mean(i))

        return avg



    if __name__ == '__main__':

        list_of_marks=[]  

        df = pd.read_csv(r"C:UsersRadhikaDesktopRADZ ProjectsXoriantdata.csv")
        n = df['STUDENT ID'].count() #no of rows

        for i in range(n):  #to obtain the list of lists
            a=list(df.iloc[i , 3:6])
            a = list(map(int, a)) #converting the lists into int to perform mean
            list_of_marks.append(list(a))

    # ---------------------MP---------------------------------------------------

        s1= time.time()    

        p = Pool()
        avg_mp = p.map(average, list_of_marks) #passed the average function and iterator is a list of list
        df['Average'] = avg_mp
        p.close()
        p.join()

        print(f"Processing took {time.time() - s1} using Multi-Processing")
答案

看起来您的average()函数应该只是:

def average(listed_marks):
   return statistics.mean(listed_marks)

以上是关于TypeError:'int'对象不可迭代-使用POOL进行多重处理的主要内容,如果未能解决你的问题,请参考以下文章

创建图像的缩略图失败,并出现TypeError:'int'对象不可下标

PYTHON,Midpoint方法,TypeError:'float'对象不能解释为整数

TypeError:当我尝试在parse.parse_args()中传递三个参数时,'int'对象不可订阅

“TypeError:'int'对象在2D,基于文本的Map Generator中是不可订阅的”

lambda and TypeError:'模块'对象不可调用[重复]

Python : TypeError: 'int' object is not iterable