如何在Python进程之间共享数据?

时间:2016-02-02 15:25:10

标签: python python-2.7 multiprocessing python-multiprocessing

我正在使用多处理为我的Python应用创建一个子流程。 我想在父进程和子进程之间共享数据。 值得一提的是,我需要异步共享,这意味着子进程和父进程将在代码运行期间更新数据。

执行该操作的最佳方法是什么?

2 个答案:

答案 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)