簡體   English   中英

在另一個 python 線程中執行 function (有響應)的最佳(最簡單)方法?

[英]Best (easiest) way to execute a function (with response) in another python thread?

我有一個小 python 腳本在樹莓派上運行(它被連接以檢測是否有東西發送到我的郵箱)向我發送帶有我郵箱內容快照的電報消息。

到目前為止,這一直是一個處理 GPIO 交互(用於 reed_contacts 的 LED 燈和 thread_callbacks)、picamera 和電報消息的單個整體腳本。 但是不再支持我使用的電報機器人( telepot )。 這就是為什么我希望合並另一個 python 電報機器人實現( python-telegram-bot )以及將腳本遷移到 python3,因為 python2 也已停止

但這樣做時,我認為我需要拆分腳本,因為 python-telegram-bot 不會在調用腳本中運行非阻塞。 在我的舊腳本中,我仍然可以在調用MessageLoop(bot, handler).run_as_thread()后繼續執行主程序(生成一個單獨的后台線程進行更新檢查)。 但是使用 python-telegram-bot 在updater.start_polling() updater.idle()之后沒有指令被評估,直到機器人停止。

我認為遷移腳本的最佳選擇是將其拆分為兩個相互通信的獨立腳本。 一個腳本處理與 picamera 和 gpio 的交互,另一個腳本用於通過電報進行用戶交互。

例如,請求實際郵箱內容圖片的命令由 telegram_script 接收。 然后,telegram_script 應該告訴 low_level_script 執行capture() function 並等待此 function 的返回/結果(以確保在 telegram_script 嘗試發送之前保存/更新圖片)。

我的問題是,我如何在兩者之間進行交流? python 在低級腳本中執行 function 並將結果返回到電報腳本的最佳/最簡單方法是什么?

我認為這取決於您要如何構建系統。 如果您有一個使用多處理在 2 個進程上運行的腳本,您可以使用 pipe 或隊列在它們之間進行通信。

如果您有兩個非常獨立的腳本,也許您可以考慮使用帶有 Unix套接字名稱的套接字。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM