Discuss / Python / 这里应该是模型的基础,并没有实现异步

这里应该是模型的基础,并没有实现异步

Topic source

Champhy_Who

#1 Created at ... [Delete] [Delete and Lock User]
import time

def consumer():
    r1=""
    while True:
        n1=yield r1
        if not n1:
            return
        print('[CONSUMER] Consuming %s ...'%n1)
        print('sleep 2s')
        time.sleep(2)
        r1='200 OK'

def product(c):
    c.send(None)#第一次发送必须是None,不然没有yiled参数可以给它赋值
    n2=0
    while n2<5:
        n2=n2+1
        print('[PRODUCER] Producing %s...'%n2)
        r2=c.send(n2)#n2=n1等于yield的参数r1
        print('[PRODUCER] Consumer return:%s'%r2)
    c.close()

c=consumer()
product(c)

Champhy_Who

#2 Created at ... [Delete] [Delete and Lock User]

yield from不懂的,请看下个小节,我的留言。

Champhy_Who

#3 Created at ... [Delete] [Delete and Lock User]
import time

def A():
    asend=''    
    while True:
        print('---A---')
        Arecv= yield asend
        print('---Arecv---:',Arecv)
        time.sleep(0.5)
        asend=200

def B(c):
    c.send(None)#第一次发送必须是None,不然没有yiled参数可以给它赋值    
    while True:
        print('---B---')
        Brecv=c.send(100)
        print('---Brecv---',Brecv)
        time.sleep(0.5)

if __name__=='__main__':
    b=A()
    B(b)

send和next的区别

send包含了发送和接受环节 Brecv=c.send(100) 发送:100 接收:Brecv=asend=200

改写成如下语法

import time

def A():
    while True:
        print('---A---')
        yield 100
        time.sleep(1)

def B(c):
    while True:
        print('---B---')
        cc=next(c)
        print('---cc---',cc)
        time.sleep(1)

if __name__=='__main__':
    b=A()
    B(b)

next只有接收 接收:Brecv=100


  • 1

Reply