0

我试图理解线程(我是新手)以使我的代码更好。现在,我在 .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 对象不可调用。

我的函数不接受任何参数,所以我不知道发生了什么,因为我在线程之外的 client.getBla() 工作正常。

谢谢你们。

4

1 回答 1

1
t = threading.Thread(target=client.getBla())

该行所做的是评估client.getBla()(返回 a int)并将其作为命名参数传递给线程。该target参数需要一个可调用的,所以你应该这样做:

t = threading.Thread(target=client.getBla)

这样做,您传递函数本身,而不是函数结果

于 2013-10-01T14:55:47.763 回答