2017-06-27 56 views
1

我正在開始一個基本的python作業。我的主腳本運行控制某些內容的代碼。然後我想要第二個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

相關問題