我的GUI中有一个功能需要一段时间才能完成,因为它与另一个程序通信。由于我不想在每次恢复使用GUI之前等待它完成,我想将此函数作为一个线程启动。
我尝试这样做:
threading.Thread(target=self.Sweep, args=Input).start()
但它没有做任何事情,没有例外,没有结果。如果我正常启动功能它可以正常工作
self.Sweep(Input)
我在这里做错了什么?
答案 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
。
我怀疑你的日志记录 - 你应该看到这个例外。