香港云主机最佳企业级服务商!

ADSL拨号VPS包含了中国大陆(联通,移动,电信,)

中国香港,国外拨号VPS。

当前位置:云主机 > python >

电信ADSL拨号VPS
联通ADSL拨号VPS
移动ADSL拨号VPS

Python通过select实现异步IO的方法


时间:2021-12-08 14:51 作者:admin


本文实例讲述了python/' target='_blank'>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程序设计有所帮助。

(责任编辑:admin)






帮助中心
会员注册
找回密码
新闻中心
快捷通道
域名登录面板
虚机登录面板
云主机登录面板
关于我们
关于我们
联系我们
联系方式

售前咨询:17830004266(重庆移动)

企业QQ:383546523

《中华人民共和国工业和信息化部》 编号:ICP备00012341号

Copyright © 2002 -2018 香港云主机 版权所有
声明:香港云主机品牌标志、品牌吉祥物均已注册商标,版权所有,窃用必究

云官方微信

在线客服

  • 企业QQ: 点击这里给我发消息
  • 技术支持:383546523

  • 公司总台电话:17830004266(重庆移动)
  • 售前咨询热线:17830004266(重庆移动)