我需要模拟一个程序100次,每小时需要进行一次模拟(一次模拟的持续时间为1小时)。从每个模拟,我想生成不同的json。我的程序只能通过点击“退出”而停止,我也尝试使其生效:
from apscheduler.schedulers.blocking import BlockingScheduler
import os
def simulation():
os.system("./program")
print ("tshark -i tun0 -T ek > path/packets_one_hour.json")
scheduler = BlockingScheduler()
scheduler.add_job(some_job, 'interval', hours=1)
scheduler.start()
我的问题是我的脚本没有停止运行。我无法生成100个不同的json文件。我必须在每小时之后放置quit
才能生成新的和不同的json。但是我不知道该怎么做。
答案 0 :(得分:2)
请参考apscheduler文档中的this示例,您可以执行以下操作。
from datetime import datetime
import os
import threading
from apscheduler.schedulers.blocking import BlockingScheduler
def json_dump():
# Put here your dump script
pass
def simulation():
os.system("./program")
t = threading.Timer(3600, json_dump)
t.start()
if __name__ == '__main__':
scheduler = BlockingScheduler()
scheduler.add_job(simulation, 'interval', hours=1, id='id_sim')
print('Press Ctrl+{0} to exit'.format('Break' if os.name == 'nt' else 'C'))
try:
scheduler.start()
except (KeyboardInterrupt, SystemExit):
pass
老实说,还没有尝试过。让我知道它是否有效。