我正在使用多处理为我的Python应用创建一个子流程。 我想在父进程和子进程之间共享数据。 值得一提的是,我需要异步共享,这意味着子进程和父进程将在代码运行期间更新数据。
执行该操作的最佳方法是什么?
答案 0 :(得分:5)
这是python文档中的一个简单示例 -
from multiprocessing import Process, Queue
def f(q):
q.put([42, None, 'hello'])
if __name__ == '__main__':
q = Queue()
p = Process(target=f, args=(q,))
p.start()
print q.get() # prints "[42, None, 'hello']"
p.join()
你也可以使用烟斗, 请参阅更多详细信息 - https://docs.python.org/2/library/multiprocessing.html
答案 1 :(得分:0)
这是一个多进程-多线程和共享几个变量的例子:
from multiprocessing import Process, Queue, Value, Manager
from ctypes import c_bool
from threading import Thread
ps = []
def yourFunc(var1, var2, pause, budget):
while True:
print(budget.value, pause.value)
##set value
pause.value = True
....
def multiProcess(distributor, threads, pause, budget):
for _ in range(threads):
t = Thread(target=yourFunc(), args=([1,2],None, distributor, pause, budget,))
t.start()
ts.append(t)
time.sleep(3)
if __name__ == '__main__':
pause = Value(c_bool, False)
budget = Value('i', 5000)
for i in range(2):
p = Process(target=multiProcess, args=('distributor', 2, pause, budget))
p.start()
ps.append(p)