在python中实现生产者和消费者的例子(三):使用fork和pipe

本文介绍如何用os模块中的fork和pipe实现生产者和消费者的例子

import os

import time

total=0

r,w=os.pipe() 

pid0=os.getpid()
print '主进程',pid0

pid1=os.fork()
#为了证明os.fork()有两个返回值
#print '测试',pid1

#os.getpid()值不是固定的 显示当前进程ID
'''
if pid1==0:
    print '子进程 ',pid1,os.getpid(),os.getppid()
else:
    print '主进程 ',pid1,os.getpid(),os.getppid()
'''

if pid1  == 0:
    print 'this is child01' ,pid1,'子进程1',os.getpid()
else :
    status1=os.waitpid(pid1,0)  
    pid2=os.fork()
    a=0
    if pid2 == 0:
        print 'this is child02' ,pid2,'子进程2',os.getpid()
        os.close(r)      
        fw=os.fdopen(w,'w')      
        for i in range(100):        
            a=a+1
            fw.write(str(a))     
            print a,' 01'
        fw.close()   

    else :

        #status2=os.waitpid(pid2,0)  
        print 'this is parent00','主进程',os.getpid(),'  its child01',pid1,' its child02',pid2      
        os.close(w)
        fr=os.fdopen(r,'r')                 
        print fr.read(),' 02'
        fr.close()







  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值