【发布时间】:2021-06-23 03:53:21
【问题描述】:
您好,我是一名正在研究 Python 3.6 的新人 我想异步更新全局 dict() 。 这是我的虚拟代码:
# prepdt.py
DATA_FROM_PKG = { 'dt1':{}, 'dt2':{} }
def PrepData(data):
global DATA_FROM_PKG
if data is not None:
DATA_FROM_PKG.update(data)
# code01.py
from prepdt import PrepData
import time
def func01():
dt1 = {'dt1':0 }
a = 0
while True:
a += 1
dt1.update({'dt1':a})
PrepData(dt1)
time.sleep(1)
func01()
# code02.py
from prepdt import PrepData
import time
def func2():
dt2 = {'dt2':0 }
a = 0
while True:
a += 1
dt2.update({'dt2':a})
PrepData(dt2)
time.sleep(1)
func2()
#main.py
from prepdt import DATA_FROM_PKG
if __name__ == '__main__':
while True:
print(DATA_FROM_PKG)
我在终端上运行python3 main.py,我期望的打印结果是:
{'dt1':, 'dt2':}
{'dt1':, 'dt2':}
{'dt1':, 'dt2':}
...
当我在第二个终端上运行命令python3 code01.py 时,我希望 main.py 终端上的打印结果应该是:
...
{'dt1':{'dt1':0}, 'dt2':}
{'dt1':{'dt1':1}, 'dt2':}
{'dt1':{'dt1':2}, 'dt2':}
...
然后我在第三个终端上运行命令python3 code02.py,我希望main.py上的打印结果应该是:
...
{'dt1':{'dt1':3}, 'dt2':{'dt2':1}}
{'dt1':{'dt1':4}, 'dt2':{'dt2':2}}
{'dt1':{'dt1':5}, 'dt2':{'dt2':3}}
...
希望我的描述能说得通,这个问题可能与多线程有关,但我对编程很陌生,不太了解并发。 我如何设计我的代码来实现这一点?非常感谢。
【问题讨论】: