在Python中停止线程

1 投票
4 回答
2066 浏览
提问于 2025-04-15 19:02

我在我的Python应用程序中使用 thread.start_new_thread 创建了一个线程。

如果这个线程在三秒钟内还没有完成,我该怎么停止它呢?

4 个回答

1

你不能这样做。线程是不能被外部强制结束的。你能做的唯一事情就是给线程添加一种方式,让它自己退出。显然,如果线程在某个系统调用中被阻塞了,你就无法做到这一点。

2

你不能直接这么做。其实,强行中止一个线程并不是个好习惯——更好的做法是使用一些同步机制,让你可以“温和”地结束线程。

不过,如果你使用的是守护线程,那么当没有其他非守护线程在运行时,它会自动被结束(比如说,如果唯一的主线程结束了)。也许这正是你想要的效果。

1

如果你真的需要这样做(比如说,有些代码可能会一直卡住),那么可以考虑用多进程模块来重写你的代码。这样你就可以创建一个新的进程,然后用Process.terminate()方法来结束这个进程。当然,你需要使用2.6或更高版本的Python。

撰写回答