def main(): # 创建日志模块 logger = Logger() log_process = Process(target=run_log_process, args=(logger,)) log_process.start() logger.info("Start epolestar equant version:%s!" % ("EquantV1.0.8.20190903")) # 创建策略引擎到界面的队列,发送资金数据 eg2ui_q = Queue(10000) # 创建界面到策略引擎的队列,发送策略全路径 ui2eg_q = Queue(10000) # 创建策略引擎 engine = StrategyEngine(logger, eg2ui_q, ui2eg_q) engine_process = Process(target=run_engine_process, args=(engine,)) engine_process.start() control = Controller(logger, ui2eg_q, eg2ui_q) control.run() time.sleep(3) import atexit def exitHandler(): control.receiveEgThread.stop() # 1. 先关闭策略进程, 现在策略进程会成为僵尸进程 # todo 此处需要重载engine的terminate函数 # 2. 关闭engine进程 engine_process.terminate() engine_process.join() log_process.terminate() log_process.join() atexit.register(exitHandler)
def main(): #创建日志模块 logger = Logger() log_process = Process(target=run_log_process, args=(logger, )) log_process.start() logger.info("Start epolestar equant9.5.4!") # 创建策略引擎到界面的队列,发送资金数据 eg2ui_q = Queue(10000) # 创建界面到策略引擎的队列,发送策略全路径 ui2eg_q = Queue(100) #创建策略引擎 engine = StrategyEngine(logger, eg2ui_q, ui2eg_q) engine_process = Process(target=run_engine_process, args=(engine, )) engine_process.start() #创建主界面 app = TkinterController(logger, ui2eg_q, eg2ui_q) #等待界面事件 app.run() import atexit def exitHandler(): # 1. 先关闭策略进程, 现在策略进程会成为僵尸进程 # todo 此处需要重载engine的terminate函数 # 2. 关闭engine进程 engine_process.terminate() engine_process.join() log_process.terminate() log_process.join() atexit.register(exitHandler)
def main(): # 创建日志模块 logger = Logger() log_process = Process(target=run_log_process, args=(logger, ), name="LoggerProcess") log_process.start() # import psutil # 获取所有进程的信息 # tmplist = [ (proc.pid,proc.name(),psutil.Process(proc.pid).cmdline()) for proc in psutil.process_iter() ] import psutil mainProcess = psutil.Process(pid=os.getpid()) tmplist = mainProcess.children() processlist = [mainProcess, *tmplist] tmplist1 = [p.cmdline() for p in processlist] logger.info("mainProcess pid " + str(os.getpid())) for i in tmplist: if i._name == "python.exe": logger.info("LoggerProcess pid " + str(i.pid)) saveMainPid(os.getpid()) # 检查软件更新 checkUpdate(logger) # 创建策略引擎到界面的队列,发送资金数据 eg2ui_q = Queue(10000) # 创建界面到策略引擎的队列,发送策略全路径 ui2eg_q = Queue(10000) # 创建策略引擎 engine = StrategyEngine(logger, eg2ui_q, ui2eg_q) engine_process = Process(target=run_engine_process, args=(engine, )) engine_process.start() # logger.info("StrategyEngineProcess pid "+str(engine_process.pid)) control = Controller(logger, ui2eg_q, eg2ui_q) control.run() time.sleep(3) import atexit def exitHandler(): control.receiveEgThread.stop() # 1. 先关闭策略进程, 现在策略进程会成为僵尸进程 # todo 此处需要重载engine的terminate函数 # 2. 关闭engine进程 engine_process.terminate() engine_process.join() log_process.terminate() log_process.join() atexit.register(exitHandler)
def main(): # 创建日志模块 logger = Logger() log_process = Process(target=run_log_process, args=(logger,)) log_process.start() saveMainPid(os.getpid()) # 检查软件更新 checkUpdate(logger) # 创建策略引擎到界面的队列,发送资金数据 eg2ui_q = Queue(10000) # 创建界面到策略引擎的队列,发送策略全路径 ui2eg_q = Queue(10000) # 创建策略引擎 engine = StrategyEngine(logger, eg2ui_q, ui2eg_q) engine_process = Process(target=run_engine_process, args=(engine,)) engine_process.start() # 创建主界面 app = TkinterController(logger, ui2eg_q, eg2ui_q) # 等待界面事件 app.run() saveMainPid() time.sleep(3) import atexit def exitHandler(): # 1. 先关闭策略进程, 现在策略进程会成为僵尸进程 # todo 此处需要重载engine的terminate函数 # 2. 关闭engine进程 engine_process.terminate() engine_process.join() log_process.terminate() log_process.join() atexit.register(exitHandler)