我正在使用不同的进程,但我无法使用全局变量。我有 2 个进程,1 个如何从 api 收集数据,最后一个进程使用这些数据并对获得的数据进行一些计算。我已经关注了这篇文章,但它对我不起作用。有人可以帮助我吗?
import pandas as pd
import numpy as np
import multiprocessing
import time
class Example():
def __init__(self):
manager = multiprocessing.Manager()
self.curValues1 = manager.dict()
def main(self):
p1 = multiprocessing.Process(target=self.gatherProcess1)
p2 = multiprocessing.Process(target=self.calc)
p1.start()
p2.start()
p1.join()
p2.join()
def gatherProcess1(self):
df = pd.DataFrame([['tom', 10], ['nick', 15], ['juli', 14]], columns = ['Name', 'Age']) # Get data from api
self.curValues1 = {"lastName": df["Name"].iloc[-1], "lastAge": df["Age"].iloc[-1]}
def calc(self):
time.sleep(1)
print(self.curValues1["lastName"], self.curValues1["lastAge"])
example = Example()
example.main()
您必须就地更新self.curValues1
字典,而不是重新分配它:
self.curvalues1.update({"lastName": df["Name"].iloc[-1], "lastAge": df["Age"].iloc[-1]})
当您以当前的方式重新分配self.curValues1
时,您只需扔掉multiprocessing.Manager
dict
并将其分配给常规dict
即可。