您的位置:首页 > 编程语言 > Python开发

python 多进程之管道实例(模板)

2013-11-22 14:18 495 查看
原文地址:http://blog.chinaunix.net/uid-20393955-id-3084628.html

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import multiprocessing

# 管道消费者.
def consumer(lock,pipe):
output_p, input_p = pipe
input_p.close() # 关闭管道输入口
while True:
lock.acquire()
item = output_p.recv()
lock.release()
if item == None:
break

# 处理部分
lock.acquire()
print(item)
lock.release()

# 管道生产者
def producer(sequence, input_p):
for item in sequence:
# Put the item on the queue
input_p.send(item)

if __name__ == '__main__':

# 进程数、创建管道,锁等
p_num = 2
process = []
(output_p, input_p) = multiprocessing.Pipe()
lock = multiprocessing.Lock()

# 定义消费进程
for i in range(p_num):
t =multiprocessing.Process(target=consumer,args=(lock,(output_p, input_p),))
t.daemon=True
process.append(t)

# 启动消费进程
for i in range(p_num):
process[i].start()

# 关闭输出管道,以往管道填充数据
output_p.close()
sequence = range(100) + [None]*p_num
producer(sequence, input_p)
# 数据填充完毕,打开输入管道
input_p.close()

# 等待结束
for i in range(p_num):
process[i].join()


  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: