Python线程错误-必须是iterable,而不是int

Python线程错误-必须是iterable,而不是int,python,multithreading,regression,python-multithreading,iterable,Python,Multithreading,Regression,Python Multithreading,Iterable,我试图计算数据帧中第一列和其他列(第一列和第二列、第一列和第三列等)之间的滚动回归r平方,但当我尝试线程化时,它不断告诉我 TypeError:ParallelRegression()参数在*之后必须是iterable,而不是int” 我想知道我该怎么解决这个问题?非常感谢 import threading totalThreads=3 #three different colors def ParallelRegression(threadnum): for i in range(t

我试图计算数据帧中第一列和其他列(第一列和第二列、第一列和第三列等)之间的滚动回归r平方,但当我尝试线程化时,它不断告诉我

TypeError:ParallelRegression()参数在*之后必须是iterable,而不是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()
请参见下面链接的图片中的数据摘要(df):


threading.Thread
类需要一个iterable参数作为
args
参数。如果要传递
args=(threadnum)
这是一个
int
对象,则需要传递一些iterable对象,该对象将允许多个arg,即使您只想传递一个arg


args=[threadnum]
会起作用,因为这使得一个
列表是可编辑的。

args=(threadnum)
看起来可能是一个输入错误。args应该是一个元组吗?一个元素元组需要一个尾随逗号:
args=(threadnum,)
为什么要回答一些可能被认为是打字错误的问题,而且已经被问了无数次,回答了无数次?这是我第一次在谷歌上搜索结果,花了5秒钟才找到。将
args
更改为列表在我的机器上是可行的,我希望它能在大多数Python发行版/环境中运行,但我认为这是一个实现不应该依赖的详细信息。的文档只说args是“目标调用的参数元组”“。如果你给它的不是一个元组,让买家小心。@Aran Fey为什么不呢?”?不赞成回答问题吗?不赞成回答明显重复的问题,是的。如果你需要知道原因:因为如果我们把所有答案都放在一个地方会更好。请看