.txtファイルでそれを行うことができます。何かが起こっているときは「ok」と書き込み、他のプログラムはそれを読み取って、.txtファイルに「ok」が含まれている場合は何かを実行します。しかし、私は別の方法でできるかどうか知りたいです。
2 に答える
USR1などのシグナルを使用することもできますが、Pythonでシグナルを発生させることはできないと思います。現在のようにファイルを介して通信する代わりに、名前付きパイプを使用できます。名前付きパイプは、いくつかの追加機能を提供します。最後の段落を参照してください。
パイプを通常のファイルとして開き、今と同じように書き込みと読み取りを行います。でパイプをmkfifo filename
作成します。Pythonプログラムで作成することもできます。デモ用の2つのサンプルプログラム:
送信者:
fdw= os.open("./mypipe", os.O_WRONLY)
while (1):
try:
os.write(fdw, "OK\n")
except OSError, e:
if e.errno==errno.EPIPE:
#Receiver closed the pipe
print "Reader closed pipe\n"
sys.exit(0)
else:
#some other os problem
print os.strerror(e.errno)
time.sleep(3)
受信者:
fdr= os.open("./mypipe", os.O_RDONLY | os.O_NONBLOCK)
while (1):
try:
s= os.read(fdr, 10)
print s
except OSError, e:
if e.errno==errno.EBUSY:
print "nothing to read yet\n"
else:
print os.strerror(e.errno)
time.sleep(1)
送信者はブロッキングパイプを開くため、受信者がパイプを閉じると、通常は終了中に例外が発生します。リーダーはノンブロッキングパイプを開くので、送信者からの書き込みを待っている間はハングしません。ブロッキング/非ブロッキングの組み合わせは、送信者または受信者がパイプの一方の端を閉じるときに異なる応答を生成します。パイプオーバーフロー(書き込みキロバイト、読み取りなし)の可能性がある場合は、書き込み終了を非ブロッキングで開くことをお勧めします。
関数を使いたいようです。私はあなたがさまざまなテストを行うことに沿って何かをしていると仮定しています、そしてそれが本当なら、それぞれが異なることをします...
def function(parameters):
パラメータは、関数で使用されるオブジェクトです。
def fib(a, b, c):
x=a*b*c*10
print x
これは単純な関数ですが、非常に複雑なことを行うことができます。
TutorialsPoint:PythonFunctionsのこのWebページを参照してください。
別のプログラムに関数がある場合は、ファイルを開いてください。
open(file_name)
function(parameters)
Pythonがファイルを開いたら、通常どおり関数を入力します。これは機能するはずです。