(я понял первоначальный вопрос, но первый ответ, который я написал есть другое решение, которое может быть полезным для кого-фитинга, что сценарий, поэтому я держу, что один, как это и предлагает второе решение. )
Для одной машины поставляемые ОС трубы являются лучшим решением для того, что вы ищете.
По существу, вы создадите вечный процесс на python, который читает с канала, и обрабатывает команды, входящие в трубу, а затем печатает в sysout.
Ссылка: http://kblin.blogspot.com/2012/05/playing-with-posix-pipes-in-python.html
Из выше источника
Workload Для того, чтобы симулировать свою рабочую нагрузку, я придумал следующий простой сценарий под названием pipetest.py, который принимает имя выходного файла, а затем записывает некоторые текст в этот файл.
#!/usr/bin/env python
import sys
def main():
pipename = sys.argv[1]
with open(pipename, 'w') as p:
p.write("Ceci n'est pas une pipe!\n")
if __name__ == "__main__":
main()
Кодекс В моем тесте, это «файл» будет FIFO создан мой код упаковщика. Реализация кода обертки заключается в следующем, я буду идти по коду подробно ниже на этой должности:
#!/usr/bin/env python
import tempfile
import os
from os import path
import shutil
import subprocess
class TemporaryPipe(object):
def __init__(self, pipename="pipe"):
self.pipename = pipename
self.tempdir = None
def __enter__(self):
self.tempdir = tempfile.mkdtemp()
pipe_path = path.join(self.tempdir, self.pipename)
os.mkfifo(pipe_path)
return pipe_path
def __exit__(self, type, value, traceback):
if self.tempdir is not None:
shutil.rmtree(self.tempdir)
def call_helper():
with TemporaryPipe() as p:
script = "./pipetest.py"
subprocess.Popen(script + " " + p, shell=True)
with open(p, 'r') as r:
text = r.read()
return text.strip()
def main():
call_helper()
if __name__ == "__main__":
main()
Вы можете попробовать подход, основанный на ответ [здесь] (http://stackoverflow.com/questions/6687660/keep-persistent-variables-in -Память-между-пробеги-оф-питон-скрипта). Если вы используете Python 3, 'reload' необходимо импортировать' from importlib import reload' –