欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python通過select實(shí)現(xiàn)異步IO的方法

 更新時(shí)間:2015年06月04日 10:20:10   作者:raygtr  
這篇文章主要介紹了Python通過select實(shí)現(xiàn)異步IO的方法,實(shí)例分析了Python中select模塊的使用技巧,需要的朋友可以參考下

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

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

在linux下利用select實(shí)現(xiàn)多路IO的文件復(fù)制程序:

#!/usr/bin/env python
import select
#導(dǎo)入select模塊
BLKSIZE=8192
def 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對(duì)輸入所有輸入的文件描述符進(jìn)行監(jiān)視
    rs,ws,es = select.select([fromfd1,fromfd2],[],[])
    for r in rs:
      if r is fromfd1:
 #當(dāng)?shù)谝粋€(gè)文件描述符可讀時(shí),讀入數(shù)據(jù)
        bytesread = readwrite(fromfd1,tofd1)      
        totalbytes += bytesread
      if r is fromfd2:
        bytesread = readwrite(fromfd2,tofd2)
        totalbytes += bytesread
    if (bytesread <= 0):
      break
  return totalbytes
def 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 0
if __name__=="__main__":
  main()

希望本文所述對(duì)大家的Python程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • 使用Python+OpenCV進(jìn)行卡類型及16位卡號(hào)數(shù)字的OCR功能

    使用Python+OpenCV進(jìn)行卡類型及16位卡號(hào)數(shù)字的OCR功能

    本文將使用Python+OpenCV實(shí)現(xiàn)模板匹配算法,以自動(dòng)識(shí)別卡的類型和以及16位卡號(hào)數(shù)字,通過實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友參考下吧
    2021-08-08
  • jenkins+python自動(dòng)化測(cè)試持續(xù)集成教程

    jenkins+python自動(dòng)化測(cè)試持續(xù)集成教程

    這篇文章主要介紹了jenkins+python自動(dòng)化測(cè)試持續(xù)集成教程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-05-05
  • 在Python中處理XML的教程

    在Python中處理XML的教程

    這篇文章主要介紹了在Python中處理XML的教程,是Python網(wǎng)絡(luò)編程中的基礎(chǔ)知識(shí),需要的朋友可以參考下
    2015-04-04
  • 深入理解Python中的內(nèi)置常量

    深入理解Python中的內(nèi)置常量

    這篇文章主要跟大家介紹了關(guān)于Python中內(nèi)置常量的相關(guān)資料,文中介紹的非常詳細(xì),對(duì)大家具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起看吧。
    2017-05-05
  • Django的多表查詢操作實(shí)戰(zhàn)

    Django的多表查詢操作實(shí)戰(zhàn)

    Django提供一種強(qiáng)大而又直觀的方式來"處理"查詢中的關(guān)聯(lián)關(guān)系,它在后臺(tái)自動(dòng)幫你處理JOIN,下面這篇文章主要給大家介紹了關(guān)于Django多表查詢操作的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-06-06
  • python如何壓縮新文件到已有ZIP文件

    python如何壓縮新文件到已有ZIP文件

    這篇文章主要為大家詳細(xì)介紹了python如何壓縮新文件到已有ZIP文件,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-03-03
  • 一個(gè)入門級(jí)python爬蟲教程詳解

    一個(gè)入門級(jí)python爬蟲教程詳解

    這篇文章主要介紹了一個(gè)入門級(jí)python爬蟲教程詳解,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-01-01
  • Python應(yīng)用開發(fā)之實(shí)現(xiàn)串口通信

    Python應(yīng)用開發(fā)之實(shí)現(xiàn)串口通信

    在嵌入式開發(fā)中我們經(jīng)常會(huì)用到串口,串口通信簡(jiǎn)單,使用起來方便,且適用場(chǎng)景多。本文為大家準(zhǔn)備了Python實(shí)現(xiàn)串口通信的示例代碼,需要的可以參考一下
    2022-11-11
  • 詳解Python中的元組與邏輯運(yùn)算符

    詳解Python中的元組與邏輯運(yùn)算符

    這篇文章主要介紹了Python中的元組與邏輯運(yùn)算符的用法,是Python入門學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下
    2015-10-10
  • 一文帶你了解Python中的雙下方法

    一文帶你了解Python中的雙下方法

    Python中有一些特殊方法的方法名都是以雙下劃線開始和結(jié)束,所以又被稱為雙下方法。本文就來為大家詳細(xì)講講Python中的雙下方法的使用,感興趣的可以了解一下
    2022-07-07

最新評(píng)論