通过使用标志运行命令将命令发送到运行脚本

时间:2016-08-01 20:14:22

标签: python subprocess command-line-arguments

我正在尝试在后台运行python脚本,并听取命令。例如,如果我运行我的脚本:

df.loc[df[(df['Count'] == 1)].index[0]:, :] 它将开始运行(并等待命令)。

然后我想跑:

python my_script.py,打开一个不同的python进程,它将在前一个进程中运行一个函数python my_script.py --do_something

我已经看到这适用于像PDPlayer这样的程序,其中标记 - 播放导致播放器开始播放视频。这也可以在python中完成吗?

我知道如何使用argparse处理命令行参数。我需要有关两个python进程之间通信的帮助。

此外,我计划cx_freeze应用程序,因此可以通过搜索可执行文件名称使用do_something()找到应用程序的PID。

感谢。

不过,我正在使用Windows ...

2 个答案:

答案 0 :(得分:1)

如果您将原始脚本pid存储在某处,则可以执行此操作。 当您使用某个标志运行脚本时,您发送的信号应由主脚本正确处理。 在https://docs.python.org/2/library/signal.html

开始搜索

答案 1 :(得分:1)

这需要做两件事:您需要处理命令行标志,并且需要将信号发送到另一个进程。对于标志,您可以使用argparse库,或者只使用sys.argv。

要发送信号,您需要已经运行的进程的进程ID(pid)。在Linux下,您可以调用{{1}},并检查是否有另一个脚本实例正在运行。如果有,请发送信号。

信号处理的另一种替代方案是DBus。但是,这不太具有跨平台能力。