0

你们中的一些使用 Twisted 更有经验的人可能会判断我是否将它与线程一起使用 - 但我做到了:)。现在我遇到了麻烦 - 我有一个应用程序服务器来监听客户端请求,每次新客户端连接它都会产生另一个我可能忘记正确关闭的线程,因为经过一段时间的大量使用服务器停止处理请求。好吧,我有 3 种不同类型的线程,其中一种发生了 - 问题是我不确定什么是正确的方法,因为它Thread.join()似乎不起作用,并且当服务器停止工作时,这样做cat /proc/<pid>/status总是会给我。Threads: 43

所以我正在寻找一种调试方法,看看如何正确关闭线程。

是的,我知道这个问题:

有什么方法可以杀死 Python 中的线程吗?

可能还有很多其他人。

4

2 回答 2

4

在反应器循环(又名产生线程)之外做任何事情的“扭曲方式”是twisted.internet.threads.deferToThread。

例如:

from twisted.internet import threads

def sthToDoInSeparateThread():
    return 3

d = threads.deferToThread(sthToDoInSeparateThread)

deferToThread 将在单独的线程中执行 sthToDoInSeparateThread 并在线程停止后立即触发返回的 defered d。

于 2009-10-20T16:46:59.497 回答
0

您可能只想这样做mythread.setDaemon(True),以便您的线程在主进程退出时退出。

于 2010-02-23T11:37:33.747 回答