Python线程问题

时间:2013-10-01 14:52:02

标签: python multithreading

我试图了解线程(我是新手)以更好地使用我的代码。现在,我有一个带有一些函数的.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()工作正常。

谢谢大家。

1 个答案:

答案 0 :(得分:1)

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

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

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

执行此操作,您将传递函数本身,而不是函数结果