扭曲和线程的问题

时间:2009-10-20 11:28:56

标签: python multithreading twisted

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

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

是的,我知道这个问题:

Is there any way to kill a Thread in Python?

可能还有很多其他人。

2 个答案:

答案 0 :(得分:4)

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

例如:

from twisted.internet import threads

def sthToDoInSeparateThread():
    return 3

d = threads.deferToThread(sthToDoInSeparateThread)

deferToThread将在单独的线程中执行sthToDoInSeparateThread,并在线程停止时立即返回deferred d。

答案 1 :(得分:0)

您可能只想执行mythread.setDaemon(True),以便在主进程退出时退出线程。