1、说在前面的话
目前我知道的库:trio asyncio 这两个库 下面分别对这两个库的使方法进行举例
2、asyncio(使用方法很简单)
客户端:
import time
from pynng import Pub0, Sub0, Timeout
import asyncio
address = 'tcp://127.0.0.1:31313'
async def subclientasyn():
sub1 = Sub0(dial=address)
sub1.subscribe(b'')
i = 1
while True:
i = i + 1
msg= await sub1.arecv()
print('收到的内容',msg)
def subclient():
sub1 = Sub0(dial=address)
sub1.subscribe(b'')
i = 1
while True:
msg=sub1.recv()
print('收到的内容',msg)
if __name__=='__main__':
import trio
# subclient()
# trio.run(subclientasyn)
tasks = [asyncio.ensure_future(subclientasyn())]
loop = asyncio.get_event_loop()
loop.run_until_complete(asyncio.wait(tasks))
loop.close()
服务器:
import time
from pynng import Pub0, Sub0, Timeout
import asyncio
address = 'tcp://127.0.0.1:31313'
def pubserver():
pub=Pub0(listen=address)
i = 1
while True:
i = i + 1
time.sleep(1)
print('we are sending-----')
pub.send(b'asyn masg')
async def pubserverasyn():
pub=Pub0(listen=address)
i = 1
while True:
i = i + 1
# await trio.sleep(1)
await asyncio.sleep(1)
print('we are sending-----')
await pub.asend(str(i).encode())
async def subclient():
sub1 = Sub0(dial=address, recv_timeout=100)
sub1.subscribe(b'')
i = 1
while True:
i = i + 1
msg= await sub1.arecv()
print('收到的内容',msg)
if __name__=='__main__':
import trio
# pubserver()
tasks = [asyncio.ensure_future(pubserverasyn())]
loop = asyncio.get_event_loop()
loop.run_until_complete(asyncio.wait(tasks))
loop.close()
# trio.run(pubserverasyn)
以上是我使用nng 这个通信库使用的
涉及到具体python的中的异步的地方:
async ----------》await 函数中要使用这两个
对于执行的地方:
tasks = [asyncio.ensure_future(pubserverasyn())] loop = asyncio.get_event_loop() loop.run_until_complete(asyncio.wait(tasks)) loop.close()
2、trio(很简单)
只需要最后运行的时候,trio.run(要异步运行的函数)
其中关于sleep trio.sleep asyncio.sleep
各自是不同的,必须要用对应的库才行。