[英]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
。
在您的情況下,您應該將WH
和delay
作為 arguments 傳遞給comprobar()
。 我希望您實際上是在嘗試做一些更復雜的事情,但是從這個有限的示例中很難看出。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.