python中的简单线程

时间:2013-04-24 09:38:24

标签: python multithreading python-multithreading

我的GUI中有一个功能需要一段时间才能完成,因为它与另一个程序通信。由于我不想在每次恢复使用GUI之前等待它完成,我想将此函数作为一个线程启动。

我尝试这样做:

threading.Thread(target=self.Sweep, args=Input).start()

但它没有做任何事情,没有例外,没有结果。如果我正常启动功能它可以正常工作

self.Sweep(Input)

我在这里做错了什么?

3 个答案:

答案 0 :(得分:0)

我不知道它是否足以解决问题,但至少,你应该制定你的args

args=(Input,)

以便将其与“直接”电话匹配。

args的{​​{1}}参数应该是包含Thread()函数的所有参数的元组。由于您有一个参数target,因此必须匹配此元组才能表示此参数。

答案 1 :(得分:0)

threading模块的使用方式与Java等效模块的使用方式相同。

我认为您正在尝试使用thread。试试这个:

thread.start_new_thread(someFunc, ())

您可以获得有关thread.start_new_thread的一些帮助here

答案 2 :(得分:0)

对我来说就像glglgl是对的。

您应该传递“args”的元组或列表,例如args=[1]而非args=1。 会发生什么,你开始你的线程,它会立即死亡,因为它试图打开一个序列 - args - 你传递的不是一个序列 - 而且抛出异常TypeError

我怀疑你的日志记录 - 你应该看到这个例外。