2016-12-02 5 views
-1

Pythonファイルがあります。何か起こると予想される時間を印刷するループで実行しています。 別のPythonファイルをインポートして印刷したいと思います! Exampel:実行中のファイル(Python)からJUST変数をインポートする

#loop.py 
import datetime 
import time 
while 1: 
    moment = datetime.datetime.now() 
    next_moment = datetime.datetime.now() + datetime.timedelta(minutes = 10) 
    time.sleep(50) 

#Print.py 
import datetime 
from loop import moment, next_moment 
print moment 
print next_moment 
print "Exit" 

しかし、私の実行Print.py場合、それは

(これは、 "終了" を右言うべき?)何もしませんし、私はskriptを取り消した場合、それは言う:。

^CTraceback (most recent call last): 
    File "print.py", line 2, in <module> 
    from loop import moment, next_moment 
    File "/home/pi/Programming/Tests/loop.py", line 8, in <module> 
    time.sleep(50) 
KeyboardInterrupt 

だから私はscpriptをインポートすることによって推測するloop.pyもそれを実行します。今、このループから変数を取得する方法がありますか?

ありがとうございました!

+0

インポート時に実行されているモジュールについてのご意見は、[こちら](http://stackoverflow.com/questions/6523791/why-is-python-running-my-module-when-i-import-it)を参照してください。 -and-how-do-i-stop-it)。なぜ、あなたはこのような別のモジュールで実行されているループから物事を引き出してみたいのですか? – roganjosh

答えて

1

loop.pyとprint.pyは異なるプロセスであるため、あなたのアプローチは機能しません。プロセス間通信が必要です。 Pythonでのインポートは、他のプロセスからのデータへのアクセスではなく、ファイルからプロセスへのコードの読み込みに関するものです。そのプロセスが特定の方法で公開していないか、デバッグしていない限り、別のプロセスに属しているデータを読み取ることはできません。

問題の解決策の1つは、loop.pyでソケットを開き、要求を待ち受けることです。 print.pyはソケットに接続し、要求を送信し、現在の状態の応答を受け取って印刷します。

+0

ありがとう。私は、 "from scrypt import x、y ..."と言っているので、これらの変数をインポートするだけでした。私はプロセス間通信をチェックアウトします! –

関連する問題