2016-09-06 36 views
1

首先简短地概括超过我目前的目标是:控制蟒蛇过程形成另一个Python文件

我想用一个调度程序来执行一个简单的Python程序的每一秒。该程序读取一些数据并在数据库中输入结果。由于计划任务将在树莓派上运行数天,因此该过程应在后台开始。因此,我想创建一个可以启动,停止并从后台作业获取当前状态的python文件。此外,应该可以在不停止后台作业的情况下退出并重新输入控制文件。

目前我试过apscheduler每秒执行一次python文件。实际的问题是,我无法访问当前的python文件,从另一个外部文件控制状态。总的来说,我发现没有真正的解决方案,我可以如何控制一个子进程形式的外部文件,并在重新启动控制python文件后再次找到相同的子进程。

编辑:

所以,总体来说,据我得到了它,现在我能找到他的PID当前进程。有了这个能够发送终止信号到当前进程。在我的预定文件中,我能够catch these signals并以正常方式关闭程序。

回答

1

控制(启动,重新启动,停止,计划)后台进程使用subprocess。这是子过程'popen with timeout'的example

要传递schedulerbackground job之间的某些数据,请使用IPC机制之一,例如套接字。

+0

可以控制进程我可以使用子进程,但是如何在重新启动控制器(mainprocess)后再次找到正在运行的子进程? –

+0

不,使用python子进程创建的子进程通常会在控制程序结束后结束。 – AbdealiJK

+0

@VeitBjarsch你可以使用像'ps'这样的linux工具,参见[example](http://stackoverflow.com/questions/2940858/kill-process-by-name)。 –