multiprocessing state

2017-09-14  本文已影响0人  xncode

数据共享

共享内存

from multiprocessing import Process, Value, Array

def f(n, a):
    n.value = 3.1415927
    for i in range(len(a)):
        a[i] = -a[i]

if __name__ == '__main__':
    num = Value('d', 0.0)
    arr = Array('i', range(10))

    p = Process(target=f, args=(num, arr))
    p.start()
    p.join()

    print num.value
    print arr[:]

server

这个服务进程是通过Manager返回的,可以包含Python对象,允许其他的进程来操作它。支持list dict Namespace Lock RLock Semaphore BoundedSemaphore Condition Event Queue Value Array

from multiprocessing import Process, Manager

def f(d, l):
    d[1] = '1'
    d['2'] = 2
    d[0.25] = None
    l.reverse()

if __name__ == '__main__':
    manager = Manager()

    d = manager.dict()
    l = manager.list(range(10))

    p = Process(target=f, args=(d, l))
    p.start()
    p.join()

    print d
    print l

相比共享内存,是可以通过网络在不同计算机之间共享的,但是会慢一些。

上一篇 下一篇

猜你喜欢

热点阅读