Python线程挂起和don';关不上
这是我第一次尝试Python中的线程, 作为一个非常简单的例子,我编写了以下程序。它只是得到一个列表,并使用一些线程打印它。但是,每当出现错误时,程序就会挂起在Ubuntu中,我似乎无法做任何事情来恢复控制提示符,因此必须重新启动另一个SSH会话才能重新启动。 我也不知道我的程序有什么问题。 是否有某种类型的错误处理,我可以放入,以确保它不会挂起。 还有,知道为什么ctrl/c不起作用吗(我没有断键)Python线程挂起和don';关不上,python,multithreading,Python,Multithreading,这是我第一次尝试Python中的线程, 作为一个非常简单的例子,我编写了以下程序。它只是得到一个列表,并使用一些线程打印它。但是,每当出现错误时,程序就会挂起在Ubuntu中,我似乎无法做任何事情来恢复控制提示符,因此必须重新启动另一个SSH会话才能重新启动。 我也不知道我的程序有什么问题。 是否有某种类型的错误处理,我可以放入,以确保它不会挂起。 还有,知道为什么ctrl/c不起作用吗(我没有断键) 你的q被挂起,因为你的工人出错了。所以你的q.task_done()从未被调用过 import
你的q被挂起,因为你的工人出错了。所以你的q.task_done()从未被调用过
import threading
使用
print threading.current_thread().name
在线程方法中,建议使用“try…except…finally”。此结构保证即使在发生错误时也将控件返回到主线程
def do_stuff(q):
while True:
try:
#do your works
except:
#log the error
finally:
q.task_done()
此外,如果您想终止程序,请找出主线程的pid并使用kill#pid
终止它。在Ubuntu或Mint中,使用ps-Ao pid,cmd
,在输出中,您可以通过搜索自己为运行Python脚本而键入的命令(第二列),找到pid(第一列)
def do_stuff(q):
while True:
try:
#do your works
except:
#log the error
finally:
q.task_done()