我试图了解线程(我是新手)以更好地使用我的代码。现在,我有一个带有一些函数的.py文件中的类。
在我的主要内容中,我在每个程序中初始化此类的对象。但是,使用线程,我希望能够在一个程序中创建所有这些对象并使用线程调用该函数。
def inicializa():
clientList = list()
thread_list = list()
config = configparser.ConfigParser()
config.read("accounts.ini")
for section in config.sections(): #define a section da conta que vou usar
email = config.get(section,'email')
password = config.get(section,'password')
the_hash = config.get(section,'hash')
authdata = config.get(section,'authdata')
authdata = eval(authdata)
client = MyClient(email,password,the_hash,authdata)
clientList.append(client)
for client in clientList:
t = threading.Thread(target=client.getBla()) # this function is inside of my class, its work OK outside of the thread if i put client.getBla.
thread_list.append(t)
for thread in thread_list:
thread.start()
return clientList
当我尝试使用线程启动函数client.getBla时得到的错误是:
线程Thread-1中的异常: TypeError:int对象不可调用。
我的函数dosnt接受任何参数,所以我不知道发生了什么,因为线程外的client.getBla()工作正常。
谢谢大家。
答案 0 :(得分:1)
t = threading.Thread(target=client.getBla())
这一行的作用是评估client.getBla()
(返回int
)并将其作为命名参数传递给Thread。 target
参数需要一个可调用的,所以你应该这样做:
t = threading.Thread(target=client.getBla)
执行此操作,您将传递函数本身,而不是函数结果