第二十四课 复习

一、课程代码

1.from celery import Celery

broker = "redis://192.168.48.136:6379/5"
backend = "redis://192.168.48.136:6379/6"
app = Celery("ajing", broker=broker, backend=backend)

@app.task
def add(x, y):
    time.sleep(5)
    return x+y
2.
def produce(q):
    print("start produce")
    for i in range(10):
        q.put(i)
        print("produce has produced value {0}".format(i))
        time.sleep(0.3)
    print("end produce")

def custome(q):
    print("start custorme")
    while 1:
        data = q.get()
        print("custormer has get value {0}".format(data))



if __name__ == '__main__':
    q = Queue()
    p = Thread(target=produce, args=(q,))
    c = Thread(target=custome, args=(q, ))
    p.start()
    c.start()

# Pipe

3.def proc1(pipe):

    for i in range(10):
        print("send {0}".format(i))
        pipe.send(i)
        time.sleep(0.1)

def proc2(pipe):
    n = 10
    while n:
        print("proc2 recv: {0}".format(pipe.recv()))
        n -= 1


if __name__ == '__main__':
    (p1, p2) = multiprocessing.Pipe(duplex=False)
    pr = Process(target=proc1, args=(p2,))
    cu = Process(target=proc2, args=(p1,))
    pr.start()
    cu.start()
 

二、小结

Pipe的方法返回一个tuple    (conn1, conn2)
Pipe方法还有一个参数duplex参数,如果deplex=True,叫双工模式
如果deplex=False conn1只负责接受, conn2只负责发消息

发消息: send
收消息: recv
关闭管道: close
from Queue import Queue
q = Queue()
q.qsize()  #返回当前队列的空间
q.empty()  #判断当前队列是否为空
q.full()   #判断当前队列是否满
q.put()    #放消息
q.get()    #获取消息
q.task_done() #接受消息的线程调用该函数来说明消息对应的任务是否已经完成
q.join()    #等待队列为空,在执行别的操作

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值