簡體   English   中英

全局變量通過多線程 python

[英]Global variables through multithreading python

我有一個正在監視的文件,因為我需要其中的兩個字段,問題是我遇到了使用多線程庫我無法共享全局變量的問題,也就是說,我在主文件和主文件中修改它們過程他們沒有出來那些修改,我一直在調查,我找不到解決方案。 您正在運行的子進程必須實時看到在主進程中所做的修改

WH = ''
delay = 0.0


def comprobar():
    print(WH)
    print(delay)


if __name__ == "__main__":

    while True: 

        with open("configUsers.json") as archivo:
            data = json.load(archivo)
            WH = data['WH']
            delay = data['delay']
            thread = multiprocessing.Process(name="hilo1", target=comprobar, args=())
            thread.start()
            time.sleep(0.5)

你在什么操作系統上運行? MacOS/Windows 或 Linux。 我猜是前者。

Python 有兩種不同的啟動子進程的方式。

在一種情況下(“分叉”),它會精確復制世界,然后調用 function。 分叉是 Linux 上的默認設置。 在這個世界上,您會看到 WH 和延遲更新值。

在另一種情況下(“生成”),它會啟動一個新的 Python 圖像並重新加載文件,但if __name__ == "__main__"則不執行其中的代碼。 這是 Windows 和 MacO 上的默認設置。 在這種情況下,您的代碼仍會將值視為""0.0

在您的情況下,您應該將WHdelay作為 arguments 傳遞給comprobar() 我希望您實際上是在嘗試做一些更復雜的事情,但是從這個有限的示例中很難看出。

暫無
暫無

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

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