2017-06-27 10 views
1

私は基本的なpythonジョブを開始しています。私のメインスクリプトは何かを制御するコードを実行します。次に、これらの値を監視してコンソールに表示するための2番目のpythonスクリプトが必要です。メインのスクリプトは定数whileループにありますので、このコードを別にする必要がありますが、動作させることはできません。別の実行中のスクリプトから値を監視するためのPythonスクリプト

例のシナリオ:

メインスクリプトは、車輪を動かして「X」の値を有します。私は20に等しいときに値 'x'にアクセスするので、xがアクセスされるたびに値を出力することはできません。 モニタプログラムは、変更をキャプチャして出力する必要があります。

file1.py

x = 0 

while True: 
    x = x + 1 
    if x == 20: 
     print('X = 20 ... Resetting X = 0') 
     x = 0 

file2.py -

import file1 
import time 

while True: 
    print(x) 
    time.sleep(0.1) 

注 - 上記のコードは私の正確なシナリオではありません、それがないので、私はここでそれを使用することはできませんモジュールは外部デバイスにアクセスするために動作します。しかし、これはおおよそ私がやろうとしていることです。

ありがとう

+1

ようこそStackOverflow。ヘルプドキュメントの投稿ガイドラインを読み、それに従ってください。 [最小、完全で検証可能な例](http://stackoverflow.com/help/mcve)がここに適用されます。 MCVEコードを投稿して問題を正確に記述するまでは、効果的にお手伝いすることはできません。 投稿したコードをテキストファイルに貼り付け、説明した問題を再現できるはずです。 – Prune

+2

それは良いですか?申し訳ありません、これは私の初めての投稿です – electronduck

+0

もっと良いです。短いバージョン(MCVE)を使うのは良いことです。ありがとう。 – Prune

答えて

0

共通変数の値を両方のスクリプトの外部のストレージポイントに出力する必要があります。ファイルに書き込んだりそこから読み込んだりすることもできますが、pickleを使うことをお勧めします。

file1.py:

import cPickle as pickle 
x = 0 
while True: 
    x = x + 1 
    with open("shared_file.pkl","r+") as fp: 
     pickle.dump(x,fp) 
    if x == 20: 
     print('X = 20 ... Resetting X = 0') 
     x = 0 

がfile2.py:

import cPickle as pickle 
import time 
x = 0 
while True: 
    with open("shared_file.pkl","r") as fp: 
     x = pickle.load(fp) 
    print x 
    time.sleep(0.1) 

は、この情報がお役に立てば幸いあなたは、このような何かを行うことができます!

編集:私はあなたのスクリプトの両方が同じディレクトリから実行することを想定している

。別のルートから実行する場合は、pklというファイル名ではなく、ルートからのパス全体を指定してください。

+0

お返事ありがとうございます。私はこれを後で試し、それがうまくいくかどうか教えてくれるでしょう。 :D – electronduck

関連する問題