python 管道 异步读取 select_Python通过select实现异步IO的方法
本文实例讲述了Python通过select实现异步IO的方法。分享给大家供大家参考。具体如下:
在Python中使用select与poll比起在C中使用简单得多。select函数的参数是3个列表,包含整数文件描述符,或者带有可返回文件描述符的fileno()方法对象。第一个参数是需要等待输入的对象,第二个指定等待输出的对象,第三个参数指定异常情况的对象。第四个参数则为设置超时时间,是一个浮点数。指定以秒为单位的超时值。select函数将会返回一组文件描述符,包括输入,输出以及异常。
在linux下利用select实现多路IO的文件复制程序:
#!/usr/bin/env python
import select
#导入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对输入所有输入的文件描述符进行监视
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 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()
希望本文所述对大家的Python程序设计有所帮助。
本文原创发布php中文网,转载请注明出处,感谢您的尊重!
python 管道 异步读取 select_Python通过select实现异步IO的方法相关推荐
- Python 数据存储读取,6千字搞定各种方法
作者 | 老表 来源 | 简说Python 一.前言 二.专栏概要 三.做准备:将爬取到的数据存入csv和mysql.其他数据库 3.1 前情回顾 3.1 数据存入+读取csv 3.2 数据存入+读取 ...
- python 管道 异步读取 select_python之异步select解析
一.I/O多路复用 I/O的含义:在计算机领域常说的IO包括磁盘IO和网络IO,我们所说的IO复用主要是指网络IO:在Linux中一切皆文件,因此网络IO也经常用文件描述符FD来表示. 复用的含义:在 ...
- python 读取文件到字典读取顺序_python顺序的读取文件夹下名称有序的文件方法...
python顺序的读取文件夹下名称有序的文件方法 如下所示: import os path="/home/test/" #待读取的文件夹 path_list=os.listdir( ...
- 已解决Python pandas.read_excel读取Excel文件报错
已解决(Python pandas.read_excel读取Excel文件报错)io = ExcelFile(io,storage_options=storage.options, engine=en ...
- python 管道队列_20.2、python进程间通信——队列和管道
进程间通信--队列和管道(multiprocess.Queue.multiprocess.Pipe) 进程间通信 IPC(Inter-Process Communication) 队列 概念介绍 创建 ...
- C# 异步读取数据库里面的数据与绑定UI的解决办法
异步读取数据库,在数据绑定的时候会出现点问题,就是窗体界面会无法关闭,要结束任务才能结束进程.例如下面代码 首先按习惯的方法,设定线程更新UI a2.CheckForIllegalCrossThrea ...
- mysql回调地狱_5、Express异步读取Mysql数据库 callback/promise/async
一.Node异步 Node.js 异步编程的直接体现就是回调. 有了异步方法,我们可以一边操作数据库,一边执行其他命令,在数据库操作完成后,我们将查询数据作为回调函数的参数返回.这样在执行代码时就没有 ...
- python读取data_转载 “ 理想国@Data ”重拾Python(5):数据读取 博客
本文主要对Python如何读取数据进行总结梳理,涵盖从文本文件,尤其是excel文件(用于离线数据探索分析),以及结构化数据库(以Mysql为例)中读取数据等内容. 约定: import numpy ...
- [Spark][Hive][Python][SQL]Spark 读取Hive表的小例子
[Spark][Hive][Python][SQL]Spark 读取Hive表的小例子 $ cat customers.txt 1 Ali us 2 Bsb ca 3 Carls mx $ hive ...
最新文章
- c++中的public,protected,private
- C#中使用Monitor类、Lock和Mutex类来同步多线程的执行(转)
- 20分钟教你搞懂Git!
- 机器视觉 · 工业相机
- python绘制好几个子图_python绘制多个子图的实例
- ssl初一组周六模拟赛【2018.3.24】
- 【OFDM系列2】OFDM复信号符号信噪比EsN0、比特信噪比EbN0、SNR的含义及关系详解
- linux安装程序过程,linux 应用程序安装过程
- python利用有道词典翻译_使用Python从有道词典网页获取单词翻译
- 做产品经理的第1年、第5年和第10年...
- 第1次在Flash Builder中写程序
- 最大堆和最小堆和平衡二叉树_最小堆二叉树
- ubuntu升级tensorflow版本
- java对象中方法的存储原理_垃圾收集机制的基本原理及方法
- matlab统计像元灰度值的函数,matlab像素值及统计
- “熵减”之下,欧瑞博填补全屋智能国产操作系统空白
- 都9012年了还没用过typescript?
- Windows蓝屏之后,DUMP分析教程
- ReactNative实现仿微信或者通讯录快速索引功能
- 服务器cadence比虚拟机慢,Cadence版本选择浅见
热门文章
- Jconsole远程监控tomcat 的JVM内存(linux、windows)
- 活动目录迁移之03奔向08 --10月18日2008系列讲座预告篇
- CAD图纸文件中标注的尺寸如何进行隐藏?
- 特征工程(二) :文本数据的展开、过滤和分块
- [算法]华为笔试题——拼音与英文转换
- 《JavaScript启示录》——1.21 JavaScript对象和Object()对象
- storm自定义分组与Hbase预分区结合节省内存消耗
- [论文笔记] A model for correlated failures in N-version programming(IIE Trans, 2004)
- lisp天正图元位置修改_块内图元的坐标定位[已解决]感谢版主
- python下载不下来_Python不能下载zip文件,而Browser/Selenium可以下载,这是为什么?...