1、非阻塞设置subprocess.Popen(args, stdout=subprocess.PIPE,stderr=subprocess.PIPE)

def non_block_read(output):
fd = output.fileno()
fl = fcntl.fcntl(fd, fcntl.F_GETFL)
fcntl.fcntl(fd, fcntl.F_SETFL, fl | os.O_NONBLOCK)
try:
return output.read()
except:
return "" #while proc.poll()!=0 :
# if proc.poll() is not None:
# print proc.poll()
# else:
# pass
#time.sleep(20)
non_block_read(proc.stdout)
print proc.stdout.read()
while proc.poll() is None:
pass print proc.poll()
print proc.stdout.read()

若子进程没有执行完 直接proc.stderr.read() 阻塞,若设置成非阻塞抛出如上异常

python subprocess.Popen 非阻塞的更多相关文章

  1. Python Subprocess Popen 管道阻塞问题分析解决

    http://ju.outofmemory.cn/entry/279026 场景:1>不断播放mp3文件: 2>使用订阅发布模式保持tcp长连接,从服务器接收信息 造成程序hang死,但是 ...

  2. python subprocess popen 静默模式(不弹出console控制台)

    python subprocess popen 静默模式(不弹出console控制台) import subprocess,sys IS_WIN32 = 'win32' in str(sys.plat ...

  3. Python subprocess.Popen communicate() 和wait()使用上的区别

    之所以会纠结到这个问题上是因为发现在调用Popen的wait方法之后程序一直没有返回.google发现wait是有可能产生死锁的.为了把这个问题彻底弄清楚,搜索一些资料过来看看: 原文链接:http: ...

  4. Python subprocess.Popen中communicate()和wait()区别

    刚开始我是使用的wait(),但是当adb命令返回太多时,程序就会卡死,查询得知原因后,才使用了communicate(),communicate()返回一个元组:(stdoutdata, stder ...

  5. Python: subprocess.Popen()不支持unicode问题解决

    起源: 所下载视频,有音视频分离者,需要合并起来,采用python之subprocess.Popen()调用ffmpeg实现.python版本为2.7.13,而音视频文件路径,有unicode字符者, ...

  6. Python 命令行非阻塞输入

    很久很久以前,系windows平台下,用C语言写过一款贪食蛇游戏,cmd界面,用kbhit()函数实现非阻塞输入.系windows平台下用python依然可以调用msvcrt.khbit实现非阻塞监听 ...

  7. Python subprocess Popen

    目的:顺序执行进程  在Bash里面类似  a.sh && b.sh && c.sh 先来说下Popen这个函数 class subprocess.Popen(args ...

  8. python subprocess.Popen 控制台输出 实时监控百度网ping值

    import subprocess file_out = subprocess.Popen('ping www.baidu.com', shell=True, stdout=subprocess.PI ...

  9. python 并发编程 非阻塞IO模型

    非阻塞IO(non-blocking IO) Linux下,可以通过设置socket使其变为non-blocking.当对一个non-blocking socket执行读操作时,流程是这个样子: 从图 ...

随机推荐

  1. ajax 页面加载

    大体说说思路,不上代码了: 1.点击加载更多-> ajax向后台传参(当前页page,必须有默认1,其他需要的参数...) 2.后台接收 -> 查询数据 处理形成 json数据 给前台 3 ...

  2. Linux测试环境部署tomcat(二)

    安装配置tomcat 1:在http://tomcat.apache.org/download-80.cgi下载最新安装包 2:安装tomcat 将apache-tomcat-8.0.21.tar.g ...

  3. HTTP状态代码含义

    1.200:正常. 2.201:服务器已经创建了文档,Location头给出了它的URL. 3.202:已经接受请求,但处理尚未完成. 4.203:文档已经正常返回,但一些应答头可能不正确,因为使用的 ...

  4. 微信Oauth2.0鉴权 40029 问题

    前阵子出了这个问题,具体表现为,在获得用户授权时,有时会出现 40029 code 无效或超时 问题.在网上查询后,大多数人说是因为微信请求了两次url,导致第二次失效,而第一次被终止了. 现在找到了 ...

  5. NewQuant的设计(一)——整体的领域设计

    NewQuant的设计思路——整体的领域分析 “领域驱动设计(DDD)”是著名软件工程建模专家Eric Evans提出的一个重要概念,是“面向对象分析设计(OOAD)”的深化.当业务逻辑变得复杂,系统 ...

  6. python logging模块详解[转]

    一.简单将日志打印到屏幕: import logging logging.debug('debug message') logging.info('info message') logging.war ...

  7. 获取公网IP

    private static string GetIP() { string tempip = ""; try { WebRequest wr = WebRequest.Creat ...

  8. linux centos6.5支持ipv6

    1.用ifconfig查看有没有inet6 addr,我的这个已经支持了,如果不支持请看第二步. 2.vim /etc/sysconfig/network 把这句改成:NETWORKING_IPV6= ...

  9. 转载:Hadoop安装教程_单机/伪分布式配置_Hadoop2.6.0/Ubuntu14.04

    原文 http://www.powerxing.com/install-hadoop/ 当开始着手实践 Hadoop 时,安装 Hadoop 往往会成为新手的一道门槛.尽管安装其实很简单,书上有写到, ...

  10. FCN网络的训练——以SIFT-Flow 数据集为例

    参考文章: http://blog.csdn.net/u013059662/article/details/52770198 caffe的安装配置,以及fcn的使用在我前边的文章当中都已经提及到了,这 ...