【发布时间】:2017-01-20 22:48:13
【问题描述】:
这是我的代码:
import asyncio, socket
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sock.bind(('', 1234))
sock.setblocking(False)
queue = asyncio.Queue()
def sock_reader():
print(sock.recv(1024))
# x = yield from queue
def test_sock_reader():
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sock.sendto(b'HELLO', ('127.0.0.1', 1234))
loop = asyncio.get_event_loop()
loop.add_reader(sock, sock_reader)
loop.call_later(0.5, test_sock_reader)
loop.run_forever()
loop.close()
这是输出:
b'HELLO'
当
# x = yield from queue行未注释时,程序不再打印b'Hello'。
为什么yield from 会影响应该已经执行的命令?
【问题讨论】:
标签: python python-3.5 python-asyncio