跨平臺python異步回調(diào)機(jī)制實(shí)現(xiàn)和使用方法
1 將下面代碼拷貝到一個(gè)文件,命名為asyncore.py
import socket
import select
import sys
def ds_asyncore(addr,callback,timeout=5):
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.connect(addr)
r,w,e = select.select([s],[],[],timeout)
if r:
respose_data=s.recv(1024)
callback(respose_data)
s.close()
return 0
else:
s.close()
return 1
2 編寫自己的代碼
1> 導(dǎo)入asyncore
2> 定義回調(diào)函數(shù)callback,callback需要一個(gè)參數(shù),代表請求返回?cái)?shù)據(jù)
3> 直接調(diào)用asyncore.ds_asyncore(('127.0.0.1', 33333),callback,timeout=5),其中第一個(gè)參數(shù)是一個(gè)(ip,port)元組,第二個(gè)是回調(diào)函數(shù),第三個(gè)是超時(shí)時(shí)間。
import asyncore
if __name__=="__main__":
def callback(respose_data):
print respose_data
asyncore.ds_asyncore(('127.0.0.1', 33333),callback,timeout=5)
注:此代碼可在windows,linux上運(yùn)行
相關(guān)文章
Python+SymPy實(shí)現(xiàn)秒解微積分詳解
SymPy是一個(gè)Python庫,專注于符號數(shù)學(xué),它的目標(biāo)是成為一個(gè)全功能的計(jì)算機(jī)代數(shù)系統(tǒng),同時(shí)保持代碼簡潔、易于理解和擴(kuò)展。本文將利用SymPy實(shí)現(xiàn)四行代碼秒解微積分,感興趣的可以學(xué)習(xí)一下2022-05-05
Python實(shí)現(xiàn)自定義異常堆棧信息的示例代碼
當(dāng)我們的程序報(bào)錯(cuò)時(shí),解釋器會將整個(gè)異常的堆棧信息全部輸出出來。解釋器會將異常產(chǎn)生的整個(gè)調(diào)用鏈都給打印出來,那么問題來了,我們能不能自定義這些報(bào)錯(cuò)信息呢?本文就來為大家詳細(xì)講講2022-07-07
一文詳解如何從根本上優(yōu)雅地解決VSCode中的Python模塊導(dǎo)入問題
有時(shí)你可能會遇到這種問題,明明用pip安裝好了一個(gè)python模塊,但在VScode中總是顯示錯(cuò)誤,這篇文章主要給大家介紹了關(guān)于如何從根本上優(yōu)雅地解決VSCode中的Python模塊導(dǎo)入問題的相關(guān)資料,需要的朋友可以參考下2024-07-07
Python讀寫及備份oracle數(shù)據(jù)庫操作示例
這篇文章主要介紹了Python讀寫及備份oracle數(shù)據(jù)庫操作,結(jié)合實(shí)例形式分析了Python針對Oracle數(shù)據(jù)庫操作的相關(guān)庫安裝,以及使用cx_Oracle與pandas庫進(jìn)行Oracle數(shù)據(jù)庫的查詢、插入、備份等操作相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2018-05-05

