首先,我對Python很陌生。我也搜索了一個解決方案,但我想通常的做法(subprocess.popen)不會在我的情況下工作。Python - 將參數傳遞給已經運行的進程
我必須將參數傳遞給已經運行的python腳本中的監聽器,而不必一次又一次地啓動腳本。有一個例子如何傳遞消息到液晶屏:
function printMsgText(message_text)
local f = io.popen("home/test/show_message.py '" .. message_text .. "'")
end
以上這LUA腳本定義了被調用每次一個消息被收到的過程。該過程稱爲(show_message.py)看起來像這樣:
import sys
from sense_hat import SenseHat
sense = SenseHat()
sense.clear()
sense.show_message(sys.argv[1])
我需要類似的東西,只是沒有在底色運行的另一個腳本,所以show_message.py不是最後的過程,但需要通過論證/消息給另一個,已經在運行的腳本。我的想法是讓show_message.py將消息打印到控制檯並在主進程中使用sys.argv,但我有點害怕它會變得混亂。
有沒有簡單的方法來做到這一點? 親切的問候
編輯:
主要腳本控制步進電機。根據用戶輸入,電機驅動預定義的步數。腳本等待用戶輸入的部分看起來像這樣:
while wait:
user_position = input("Where do you wanna go? (0, 1, 2, back): ")
wait = False
# Console output
print("Position: " + str(user_position))
if user_position == "0":
stepper.set_target_position(position_zero)
wait = True
elif user_position == "1":
stepper.set_target_position(position_one
wait = True
elif user_position == "2":
stepper.set_target_position(position_two)
wait = True
elif user_position == "back":
break
現在我需要經由其被設計我上述方式web應用來傳遞所希望的位置(例如調用一個LUA腳本每次傳遞一個變量/參數)而不是通過控制檯。
非常感謝。根據我的理解,親子關係會給我帶來一些問題,因爲每次我發送一條消息,父進程就會重複開始,孩子也會這樣,對吧? –
@TheCakeWasALie如果我正確地獲得了您的描述,它可以工作,如果您的Web應用程序作爲孩子啓動後臺進程,然後將傳入的消息傳遞給它。 – ThomasH
我想這裏是沒有辦法,我可以保持Web應用程序和我的主要腳本之間的連接,至少我被告知。我只能將命令發送到通過專用協議連接的設備。在我的設備(一個RPi)上,我可以定義一個腳本,一接到命令就立即開始。當我發送另一個命令時,腳本再次啓動。所以每當我改變位置時,我的腳本的一個新實例就會開始。所以我需要我的主腳本在後臺運行,控制步進器和某種「控制」腳本,只是傳遞一個數字/字符串,然後退出。 –