在四处搜寻有关Joe Kington发布的代码的更多信息时,我发现了numpy-
sharedmem软件包。从这个numpy
/ multiprocessing教程来看,它似乎具有相同的知识遗产(也许基本上是相同的作者?–我不确定)。
使用sharedmem模块,您可以创建一个共享内存的numpy数组(太棒了!),并将其与如下所示的多重处理一起使用:
import sharedmem as shmimport numpy as npimport multiprocessing as mpdef worker(q,arr): done = False while not done: cmd = q.get() if cmd == 'done': done = True elif cmd == 'data': ##Fake data. In real life, get data from hardware. rnd=np.random.randint(100) print('rnd={0}'.format(rnd)) arr[:]=rnd q.task_done()if __name__=='__main__': N=10 arr=shm.zeros(N,dtype=np.uint8) q=mp.JoinableQueue() proc = mp.Process(target=worker, args=[q,arr]) proc.daemon=True proc.start() for i in range(3): q.put('data') # Wait for the computation to finish q.join()print arr.shape print(arr) q.put('done') proc.join()
运行收益
rnd=53(10,)[53 53 53 53 53 53 53 53 53 53]rnd=15(10,)[15 15 15 15 15 15 15 15 15 15]rnd=87(10,)[87 87 87 87 87 87 87 87 87 87]
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)