web-dev-qa-db-fra.com

Python erreur de thread - doit être un itérable, pas int

J'essaie de calculer le r au carré de la régression entre la première colonne et les autres colonnes dans une trame de données (première colonne et deuxième, première colonne et troisième, etc.).

TypeError: l'argument ParallelRegression () après * doit être un itérable, pas un entier ".

Je me demande comment résoudre ce problème? Merci beaucoup!

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()

Voir un résumé des données (df) dans l'image liée ci-dessous:

enter image description here

8
Catherine Zhang

La classe threading.Thread A besoin d'un itérable d'arguments comme paramètre args. Vous passez args=(threadnum) qui est un seul objet int, vous devez passer un objet itérable qui autoriserait plusieurs arguments, même lorsque vous ne voulez passer qu'un seul argument.

args=[threadnum] Fonctionnerait, car cela fait un list qui est itérable.

14
nosklo