Python线程错误 - 必须是可迭代的,而不是int

Cat*_*ang 5 python multithreading iterable regression python-multithreading

我正在尝试计算数据帧中第一列和其他列之间的回归的滚动r平方(第一列和第二列,第一列和第三列等)但是当我尝试线程时,它一直告诉我错误

TypeError:*之后的ParallelRegression()参数必须是可迭代的,而不是int".

我想知道如何解决这个问题?非常感谢!

import threading

totalThreads=3 #three different colors
def ParallelRegression(threadnum):
    for i in range(threadnum):
        res[:,i]=sm.OLS(df.iloc[:,0], df.iloc[:,i+1]).fit().rsquared
threads=[]
for threadnum in range(totalThreads):
    t=threading.Thread(target=ParallelRegression,args=(threadnum))
    threads.append(t)
    t.start()
for threadnum in range(totalThreads):
    threads[threadnum].join()
Run Code Online (Sandbox Code Playgroud)

查看下面链接图片中的数据摘要(df):

在此输入图像描述

小智 11

还有另一种解决方案:在“threadnum”末尾添加逗号

t=threading.Thread(target=ParallelRegression,args=(threadnum,))
Run Code Online (Sandbox Code Playgroud)


nos*_*klo 10

threading.Threadclass需要一个可迭代的参数作为args参数.你传递的args=(threadnum)是一个单个int对象,你需要传递一些允许多个args的可迭代对象,即使你只想传递一个arg.

args=[threadnum]会工作,因为这使得一个list可迭代的.

  • @Aran-Fey 为什么不呢?回答问题会皱眉吗? (2认同)