python中的简单线程
我的GUI中有一个函数需要一段时间才能完成,因为它与另一个程序通信。因为我不想每次都等到它完成后再继续使用GUI,所以我想作为一个线程启动这个函数 我试着这样做:python中的简单线程,python,multithreading,python-multithreading,Python,Multithreading,Python Multithreading,我的GUI中有一个函数需要一段时间才能完成,因为它与另一个程序通信。因为我不想每次都等到它完成后再继续使用GUI,所以我想作为一个线程启动这个函数 我试着这样做: threading.Thread(target=self.Sweep, args=Input).start() 但它什么也没做,没有例外,没有结果。如果我正常启动函数,它工作正常 self.Sweep(Input) 我做错了什么?我不知道这是否足以解决问题,但至少,你应该做出正确的判断 args=(Input,) 以便与“直接”
threading.Thread(target=self.Sweep, args=Input).start()
但它什么也没做,没有例外,没有结果。如果我正常启动函数,它工作正常
self.Sweep(Input)
我做错了什么?我不知道这是否足以解决问题,但至少,你应该做出正确的判断
args=(Input,)
以便与“直接”呼叫匹配
Thread()
的args
参数应该是包含target
函数所有参数的元组。由于有一个参数,Input
,因此必须匹配此元组来表示此参数。线程化模块的使用方式与Java等效模块相同
我想你是在尝试使用。试试这个:
thread.start_new_thread(someFunc, ())
你可以得到一些关于
线程的帮助。开始新线程在我看来,glglgl是正确的
您应该传递“args”的元组或列表,例如args=[1]
而不是args=1
。
发生的情况是,你启动你的线程,它立即死亡,因为它试图打开一个序列-args-你传递了一个序列以外的东西-并且抛出了一个异常TypeError
我怀疑您的日志记录-您应该看到此异常。您如何确定“结果”?你不希望它返回,是吗?不,我在另一个程序中看到了结果,它与如果你在self.Sweep()中放入一些调试打印,会发生什么情况?我尝试了两个答案,结果相同;未执行调试打印您正在使用的GUI工具包是什么?