Python的multiprocessing模块包装了底层的机制,提供了Queue、Pipes等多种方式来交换数据。
我们以Queue为例,在父进程中创建两个子进程,一个往Queue里写数据,一个从Queue里读数据:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
from multiprocessing import Process,
Queue import os,
time, random #
写数据进程执行的代码: def write(q): for value in [ 'A' , 'B' , 'C' ]: print 'Put
%s to queue...' % value q.put(value) time.sleep(random.random()) #
读数据进程执行的代码: def read(q): while True : value = q.get( True ) print 'Get
%s from queue.' % value if __name__ = = '__main__' : #
父进程创建Queue,并传给各个子进程: q = Queue() pw = Process(target = write,
args = (q,)) pr = Process(target = read,
args = (q,)) #
启动子进程pw,写入: pw.start() #
启动子进程pr,读取: pr.start() #
等待pw结束: pw.join() #
pr进程里是死循环,无法等待其结束,只能强行终止: pr.terminate() |
from : 网上整理