我正在尝试在后台运行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 ...答案 0 :(得分:1)
如果您将原始脚本pid存储在某处,则可以执行此操作。 当您使用某个标志运行脚本时,您发送的信号应由主脚本正确处理。 在https://docs.python.org/2/library/signal.html
开始搜索答案 1 :(得分:1)
这需要做两件事:您需要处理命令行标志,并且需要将信号发送到另一个进程。对于标志,您可以使用argparse库,或者只使用sys.argv。
要发送信号,您需要已经运行的进程的进程ID(pid)。在Linux下,您可以调用{{1}},并检查是否有另一个脚本实例正在运行。如果有,请发送信号。
信号处理的另一种替代方案是DBus。但是,这不太具有跨平台能力。