当python文件发生变更时,每次手动杀掉进程然后重启这种操作台繁琐了。利用watchdog可以监控目录文件的变化,无需手动定时扫描,可以利用操作系统的API来监控目录文件的变化并发送通知。 首先安装watchdog
pip3 install watchdog
示例代码
from watchdog.observers import Observer
from watchdog.events import *
import time
import argparse
import subprocess
class MyFileSystemEventHander(FileSystemEventHandler):
def __init__(self , fn):
super(FileSystemEventHandler , self).__init__()
self.restart = fn
def on_any_event(self , event):
if event.src_path.endswith('.py'):
self.restart()
def kill_process():
global process
if process:
print('kill process: ' , process)
process.kill()
process.wait()
process = None
def start_process():
global command , process
process = subprocess.Popen(["python3" , command])
print('start process: ' , process)
def restart_process():
kill_process()
start_process()
if __name__ == "__main__":
parser = argparse.ArgumentParser()
parser.add_argument('-p' , '--python' , help ='可执行python文件')
args = vars(parser.parse_args())
# 监控的可执行文件
command = os.path.join(args['python'] , "test.py")
observer = Observer()
observer.schedule(MyFileSystemEventHander(restart_process) , args["python"] , recursive = True)
observer.start()
start_process()
try:
while True:
time.sleep(0.5)
except KeyboardInterrupt:
observer.stop()
observer.join()