Python守护线程在进程结束时退出
我在一个终端上启动了一个Python脚本,然后在另一个终端上用kill -9命令来结束这个进程。我希望即使父进程被杀掉,线程仍然能够继续执行并修改文件。但是实际上并没有这样发生。有没有什么办法可以实现这个呢?
import time,os
import threading
# Create your tests here.
def a(fname):
print "a"
time.sleep(20)
touch(fname)
def touch(fname, times=None):
with open(fname, 'a'):
os.utime(fname, times)
print "touched"
fname = "test.txt"
t = threading.Thread(target=a, args=(fname,))
t.setDaemon(True)
t.start()
t.join()
1 个回答
1
很遗憾,你尝试的事情是不可能的。线程只能在它们的父进程运行的时候运行。如果你想从你的脚本中开始执行一些代码,但希望这些代码在你的脚本退出后继续执行,你应该把这些代码放到一个单独的脚本里,然后使用 subprocess
模块来启动它。具体来说,你可以使用 subprocess.Popen
来启动这个脚本,而不需要等待它完成:
subprocess.Popen(['./yourscript.py', '-a', 'opt'])