Python 线程错误 - 必须是可迭代的,而不是 int
Python threading error - must be an iterable, not int
我正在尝试计算数据框中第一列和其他列(第一列和第二列、第一列和第三列等)之间回归的滚动 r 平方。但是当我尝试线程时,它一直告诉我
错误
TypeError: ParallelRegression() argument after * must be an iterable, not 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
class 需要一个可迭代的参数作为 args
参数。您传递的 args=(threadnum)
是单个 int
对象,您需要传递一些允许多个参数的可迭代对象,即使您只想传递一个参数。
args=[threadnum]
会工作,因为这使得 list
是可迭代的。
还有一个解决办法:在"threadnum"末尾加一个逗号
t=threading.Thread(target=ParallelRegression,args=(threadnum,))
我正在尝试计算数据框中第一列和其他列(第一列和第二列、第一列和第三列等)之间回归的滚动 r 平方。但是当我尝试线程时,它一直告诉我
错误TypeError: ParallelRegression() argument after * must be an iterable, not 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
class 需要一个可迭代的参数作为 args
参数。您传递的 args=(threadnum)
是单个 int
对象,您需要传递一些允许多个参数的可迭代对象,即使您只想传递一个参数。
args=[threadnum]
会工作,因为这使得 list
是可迭代的。
还有一个解决办法:在"threadnum"末尾加一个逗号
t=threading.Thread(target=ParallelRegression,args=(threadnum,))