gpt4 book ai didi

python - 如何在python中控制子线程进程?

转载 作者:太空宇宙 更新时间:2023-11-04 11:04:32 25 4
gpt4 key购买 nike

代码优先:

'''this is main structure of my program'''

from twisted.web import http
from twisted.protocols import basic
import threading

threadstop = False #thread trigger,to be done
class MyThread(threading.Thread):
def __init__(self):
threading.Thread.__init__(self)
self.start()

def run(self):
while True:
if threadstop:
return
dosomething()


'''def some function'''

if __name__ == '__main__':
from twisted.internet import reactor
t = MyThread()
reactor.listenTCP(serverport,myHttpFactory())
reactor.run()

作为我的第一个多线程程序,我很高兴它按预期工作。但是现在我发现我无法控制它。如果我在前面运行,Control+C只能停止主进程,在processlist中还能找到;如果我在后台运行它,我必须使用 kill -9 pid 来停止它。我想知道是否有一种方法可以通过触发变量来控制子线程进程,或者除了 kill -9 之外还有更好的方法来停止整个进程。

最佳答案

使用 atexit模块注册(在主线程中)将全局 threadstop 设置为 True 的函数,或者更简单地说,设置 daemon将线程对象的属性设置为 True,这样如果主线程退出,它就不会让进程保持事件状态。

关于python - 如何在python中控制子线程进程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2444616/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com