亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

 更新時(shí)間:2015年06月04日 10:26:58   作者:raygtr  
這篇文章主要介紹了Python通過(guò)poll實(shí)現(xiàn)異步IO的方法,實(shí)例分析了poll方法實(shí)現(xiàn)異步IO的相關(guān)技巧,需要的朋友可以參考下

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

在使用poll()后返回輪詢對(duì)象,該對(duì)象支持以下方法:
pollObj.register(fd,[,eventmask])第一個(gè)參數(shù)是注冊(cè)新的文件描述符fd,fd要么是一個(gè)整數(shù)文件描述符,要么可以帶有一個(gè)獲取文件描述符的fileno()方法的對(duì)象。eventmask是一些按位或標(biāo)記,這些標(biāo)記指示要處理的事件。

POLLIN:       用于讀取數(shù)據(jù)
POLLPRI:      用于讀取緊急數(shù)據(jù)
POLLOUT:      準(zhǔn)備寫(xiě)入
POLLERR:      錯(cuò)誤情況
POLLHUP:      保持狀態(tài)
POLLNVAL:     無(wú)效請(qǐng)求

最后在循環(huán)中利用pollObj.poll()來(lái)進(jìn)行對(duì)已注冊(cè)的文件描述符進(jìn)行輪詢。返回一元祖(fd,event)。其中fd是文件描述符,event是指示時(shí)間的位掩碼。至需要將event與對(duì)應(yīng)的時(shí)間進(jìn)行&測(cè)試即可。

利用poll創(chuàng)建對(duì)一個(gè)多路文件復(fù)制程序,代碼如下:

#!/usr/bin/env python
import select
BLKSIZE=8192
def readwrite(fromfd,tofd):
  readbuf = fromfd.read(BLKSIZE)
  if readbuf:
    tofd.write(readbuf)
    tofd.flush()
  return len(readbuf)
def copyPoll(fromfd1,tofd1,fromfd2,tofd2):
  #定義需要監(jiān)聽(tīng)的事件
  READ_ONLY = (select.POLLIN |
       select.POLLPRI |
      select.POLLHUP |
      select.POLLERR )
  totalbytes=0
    if not (fromfd1 or fromfd2 or tofd1 or tofd2) :
    return 0
  fd_dict = {fromfd1.fileno():fromfd1,fromfd2.fileno():fromfd2}
  #創(chuàng)建poll對(duì)象p
  p=select.poll()
  #利用poll對(duì)象p對(duì)需要監(jiān)視的文件描述符進(jìn)行注冊(cè)
  p.register(fromfd1,READ_ONLY)
  p.register(fromfd2,READ_ONLY)
  while True:
  #輪詢已經(jīng)注冊(cè)的文件描述符是否已經(jīng)準(zhǔn)備好
    result = p.poll()
    if len(result) != 0:
      for fd,events in result:
        if fd_dict[fd] is fromfd1:
          if events & (select.POLLIN|select.POLLPRI):
            bytesread = readwrite(fromfd1,tofd1)
            totalbytes+=bytesread
          elif events & (select.POLLERR):
            p.unregister(fd_dict[fd])
        if fd_dict[fd] is fromfd2:
          if events & (select.POLLIN|select.POLLPRI):
            bytesread = readwrite(fromfd2,tofd2)
            totalbytes+=bytesread
          elif events & (select.POLLERR):
            p.unregister(fd_dict[fd])
    if bytesread <= 0:  
      break
  return totalbytes
def main():
  fromfd1 = open("/etc/fstab","r")
  fromfd2 = open("/root/VMwareTools-8.8.1-528969.tar.gz","r")
  tofd1 = open("/root/fstab","w+")
  tofd2 = open("/var/passwd","w+")
  totalbytes = copyPoll(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線程池(threadpool)模塊使用筆記詳解

    python線程池(threadpool)模塊使用筆記詳解

    這篇文章主要介紹了python線程池(threadpool)模塊使用筆記詳解,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-11-11
  • Python實(shí)現(xiàn)定期檢查源目錄與備份目錄的差異并進(jìn)行備份功能示例

    Python實(shí)現(xiàn)定期檢查源目錄與備份目錄的差異并進(jìn)行備份功能示例

    這篇文章主要介紹了Python實(shí)現(xiàn)定期檢查源目錄與備份目錄的差異并進(jìn)行備份功能,涉及Python基于filecmp模塊的文件比較及讀寫(xiě)等相關(guān)操作技巧,需要的朋友可以參考下
    2019-02-02
  • Python Opencv輪廓常用操作代碼實(shí)例解析

    Python Opencv輪廓常用操作代碼實(shí)例解析

    這篇文章主要介紹了Python Opencv輪廓常用操作代碼實(shí)例解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-09-09
  • python生成二維碼的實(shí)例詳解

    python生成二維碼的實(shí)例詳解

    這篇文章主要介紹了python生成二維碼的實(shí)例詳解的相關(guān)資料,希望通過(guò)本文能幫助到大家,讓大家實(shí)現(xiàn)這樣的功能,需要的朋友可以參考下
    2017-10-10
  • Python+Pygame實(shí)戰(zhàn)之瘋狂吃水果游戲的實(shí)現(xiàn)

    Python+Pygame實(shí)戰(zhàn)之瘋狂吃水果游戲的實(shí)現(xiàn)

    吃豆人和切水果這兩個(gè)游戲相信大家都不陌生吧,本文將利用Python中的Pygame模塊編寫(xiě)出一款結(jié)合吃豆人+切水果的新游戲:瘋狂吃水果,感興趣的可以了解一下
    2022-06-06
  • Python考拉茲猜想輸出序列代碼實(shí)踐

    Python考拉茲猜想輸出序列代碼實(shí)踐

    這篇文章主要介紹了Python考拉茲猜想輸出序列代碼實(shí)踐,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-07-07
  • Python實(shí)現(xiàn)封裝打包自己寫(xiě)的代碼,被python import

    Python實(shí)現(xiàn)封裝打包自己寫(xiě)的代碼,被python import

    這篇文章主要介紹了Python實(shí)現(xiàn)封裝打包自己寫(xiě)的代碼,被python import,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-07-07
  • python實(shí)時(shí)分析日志的一個(gè)小腳本分享

    python實(shí)時(shí)分析日志的一個(gè)小腳本分享

    這篇文章主要給大家分享了一個(gè)實(shí)時(shí)分析日志的python小腳本,文中給出了詳細(xì)的介紹和示例代碼供大家參考學(xué)習(xí),對(duì)大家學(xué)習(xí)或者使用python具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起看看吧。
    2017-05-05
  • Python 帶星號(hào)(* 或 **)的函數(shù)參數(shù)詳解

    Python 帶星號(hào)(* 或 **)的函數(shù)參數(shù)詳解

    這篇文章主要介紹了Python 帶星號(hào)(* 或 **)的函數(shù)參數(shù)詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-02-02
  • 將Dataframe數(shù)據(jù)轉(zhuǎn)化為ndarry數(shù)據(jù)的方法

    將Dataframe數(shù)據(jù)轉(zhuǎn)化為ndarry數(shù)據(jù)的方法

    今天小編就為大家分享一篇將Dataframe數(shù)據(jù)轉(zhuǎn)化為ndarry數(shù)據(jù)的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-06-06

最新評(píng)論