0

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

我试着这样做:

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

但它什么也没做,没有例外,没有结果。如果我正常启动该功能,它可以正常工作

self.Sweep(Input)

我在这里做错了什么?

4

3 回答 3

0

在我看来,glglgl 是对的。

您应该为“args”传递一个元组或列表,例如args=[1]而不是args=1。发生的情况是,你启动你的线程,它立即死亡,因为它试图打开一个序列 - args - 你传递了一个序列以外的东西 - 并且TypeError抛出了一个异常。

我对您的日志记录持怀疑态度 - 您应该已经看到了这个异常。

于 2013-04-26T22:39:40.860 回答
0

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

args=(Input,)

为了将它与“直接”调用相匹配。

args参数 forThread()应该是一个包含函数所有参数的元组target。因为你有一个参数,Input你必须匹配这个元组来表示这个。

于 2013-04-24T09:50:52.220 回答
0

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

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

thread.start_new_thread(someFunc, ())

你可以在这里得到一些关于thread.start_new_thread.

于 2013-04-24T09:52:42.597 回答