1、說在前面的話
目前我知道的庫:trio asyncio 這兩個庫 下面分別對這兩個庫的使方法進行舉例
2、asyncio(使用方法很簡單)
客戶端:
import time
from pynng import pub0, sub0, timeout
import asyncio
address = 'tcp:'
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:'
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())]2、trio(很簡單)loop = asyncio.get_event_loop()
loop.run_until_complete(asyncio.wait(tasks))
loop.close()
只需要最後執行的時候,trio.run(要非同步執行的函式)
其中關於sleep trio.sleep asyncio.sleep
各自是不同的,必須要用對應的庫才行。
python如何實現非同步呼叫函式執行
在實現非同步呼叫之前我們先進行什麼是同步呼叫和非同步呼叫 分析一下,下面的例子 定義了乙個裝飾器 async 和 a b 兩個function 函式 a 裡面sleep 10s 然後列印 a function 字串 b 裡面直接列印 b function 字串 我們順序呼叫兩個功能 a b 由於函式...
關於python協程與非同步舉例
寫了幾個介面,也就接觸到了python的非同步。python的協程使用非同步實現的 說法不知道準不準確 所以直接使用協程來做,看的很多例子也是這麼幹的 先看 import json import tornado import tornado.web from tornado import gen f...
關於python的open 函式
大家都知道,python的open 函式可以用來開啟txt,但是你們知不知道,open函式可以開啟所有的檔案型別嗎?open函式語法 open 檔名 模式 不過這裡有一點要注意的是 open函式的w模式,是會覆蓋原來的檔案,重新編寫 有些檔案,比如docx,你編寫了再用word開啟檔案是會損壞的 但...