国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

Python通過select實現異步IO的方法

2020-02-23 01:32:28
字體:
來源:轉載
供稿:網友

本文實例講述了Python通過select實現異步IO的方法。分享給大家供大家參考。具體如下:

在Python中使用select與poll比起在C中使用簡單得多。select函數的參數是3個列表,包含整數文件描述符,或者帶有可返回文件描述符的fileno()方法對象。第一個參數是需要等待輸入的對象,第二個指定等待輸出的對象,第三個參數指定異常情況的對象。第四個參數則為設置超時時間,是一個浮點數。指定以秒為單位的超時值。select函數將會返回一組文件描述符,包括輸入,輸出以及異常。

在linux下利用select實現多路IO的文件復制程序:

#!/usr/bin/env pythonimport select#導入select模塊BLKSIZE=8192def readwrite(fromfd,tofd):  readbuf = fromfd.read(BLKSIZE)  if readbuf:    tofd.write(readbuf)    tofd.flush()  return len(readbuf)def copy2file(fromfd1,tofd1,fromfd2,tofd2):    ''' using select to choice fds'''  totalbytes=0    if not (fromfd1 or fromfd2 or tofd1 or tofd2) : #檢查所有文件描述符是否合法        return 0  while True: #開始利用select對輸入所有輸入的文件描述符進行監視    rs,ws,es = select.select([fromfd1,fromfd2],[],[])    for r in rs:      if r is fromfd1: #當第一個文件描述符可讀時,讀入數據        bytesread = readwrite(fromfd1,tofd1)              totalbytes += bytesread      if r is fromfd2:        bytesread = readwrite(fromfd2,tofd2)        totalbytes += bytesread    if (bytesread <= 0):      break  return totalbytesdef main():  fromfd1 = open("/etc/fstab","r")  fromfd2 = open("/etc/passwd","r")  tofd1 = open("/root/fstab","w+")  tofd2 = open("/root/passwd","w+")  totalbytes = copy2file(fromfd1,tofd1,fromfd2,tofd2)  print "Number of bytes copied %d/n" % totalbytes  return 0if __name__=="__main__":  main()

希望本文所述對大家的Python程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 天长市| 清镇市| 泸溪县| 寻甸| 屏山县| 滕州市| 神木县| 洞头县| 瑞安市| 普格县| 武乡县| 陈巴尔虎旗| 珠海市| 绵阳市| 故城县| 额济纳旗| 兴山县| 九龙坡区| 永福县| 株洲县| 菏泽市| 元氏县| 大埔区| 邳州市| 赞皇县| 莒南县| 稷山县| 宣汉县| 泸西县| 玛纳斯县| 自贡市| 华蓥市| 福泉市| 洞口县| 富民县| 云和县| 工布江达县| 普定县| 普洱| 海城市| 尤溪县|