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

9 浏览
0 Comments

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

我正在尝试计算在数据框中第一列和其他列之间进行回归的滚动$r^2$。(第一列和第二列、第一列和第三列等)。但是当我尝试使用多线程时,它一直告诉我错误:

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)的摘要:

\"enter

admin 更改状态以发布 2023年5月20日
0
0 Comments

还有另外一种解决方案:在“threadnum”的结尾处添加一个逗号。

t=threading.Thread(target=ParallelRegression,args=(threadnum,))

0
0 Comments

threading.Thread类需要将参数args作为一个可迭代对象传递。你正在传递args=(threadnum),这是一个单一的int对象,需要传递一些可迭代对象,即使你只想传递一个参数。

使用args=[threadnum]会有效果,因为它创建了一个可迭代的list

0