亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在兩個正在運行的 python 程序之間鏈接變量?

如何在兩個正在運行的 python 程序之間鏈接變量?

ITMISS 2022-07-26 15:48:39
我正在使用 Pynput 創建一個程序,簡而言之,它會在按住鍵時執行某些操作。在對 Pynput 進行了一些研究之后,我發現沒有辦法,而且似乎沒有計劃的方法可以在按住鍵的同時做某事,所以我正在設計我的方法。我的計劃是讓兩個 Python 腳本同時運行,它們之間有一個不斷更新的變量。這是因為當在一個程序中使用時,while 循環會停止 Pynput 偵聽器。其中一個腳本將監聽鍵盤并相應地更新變量,另一個將實際執行結果。唯一的問題是我不知道如何在兩個正在運行的腳本之間主動鏈接變量,并且互聯網上沒有任何東西讓我知道如何這樣做(我嘗試過導入其他腳本和東西,但不僅是這很困難,因為我使用的是 Mac,但它沒有主動傳遞變量)。目前,我的代碼看起來有點像這樣:(偵聽器腳本)from pynput import keyboarddoThing = 0def on_press(key):    doThing = 1def on_release(key):    doThing = 0def startListener():    listener = keyboard.Listener(        on_press=on_press,        on_release=on_release)    listener.join()(做某事的腳本)while True:    if doThing == 1:        print('Thing')我想在它們之間鏈接的變量是 doThing,但我不知道我將如何實際設置變量。我正在考慮使用 JSON,但我不知道這是否是最好的方法。
查看完整描述

2 回答

?
catspeake

TA貢獻1111條經驗 獲得超0個贊

這是一個使用線程的示例。這允許 Python 運行兩個(或更多)單獨的線程,每個線程同時做不同的事情。(從技術上講,它們實際上并不是同時發生的,而是交替發生的,但這在這種情況下并不重要)。


在一個線程中,您監聽按鍵。在另一個線程中,您檢查關鍵狀態并做出適當反應。


import threading

from pynput import keyboard


class KeyCheckThread(threading.Thread):

    def __init__(self):

        super(KeyCheckThread, self).__init__()

        self.doThing = 0


    def on_press(self, key):

        self.doThing = 1


    def on_release(self, key):

        self.doThing = 0


    def run(self):

        with keyboard.Listener(on_press=self.on_press, on_release=self.on_release) as listener:

            listener.join()



listenerThread = KeyCheckThread()

listenerThread.start()


while(True):

    if listenerThread.doThing == 1:

        print("doThing")


查看完整回答
反對 回復 2022-07-26
?
慕村9548890

TA貢獻1884條經驗 獲得超4個贊

您已經考慮使用臨時文件了嗎?這是示例:


from pynput import keyboard


doThing = 0


def generate_variable(var): 

    with open("temp", "a") as temp:

        temp.write(str(var)) 


def on_press(key):

    generate_variable(1)


def on_release(key):

    doThing = 0


def startListener():

    listener = keyboard.Listener(

        on_press=on_press,

        on_release=on_release)

    listener.join()

在第二個腳本上:


def truncate_file(): 

    with open("temp","w"): 

        pass 


while True:

    doThing = len(open("temp", "r").read()) > 0

    if doThing:

        print('Thing')

        truncate_file()


查看完整回答
反對 回復 2022-07-26
  • 2 回答
  • 0 關注
  • 81 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號