首页 > 编程语言 >Python3 stdout read readline 阻塞情况简单说明

Python3 stdout read readline 阻塞情况简单说明

时间:2024-03-15 14:01:53浏览次数:20  
标签:stdout read 阻塞 subprocess PIPE process readline

         Python3 stdout read readline 阻塞情况简单说明   执行命令行,并获取返回结果。 代码1: process = subprocess.Popen(cmd_string,stdout=subprocess.PIPE,\             universal_newlines=True,\             stderr=subprocess.PIPE,\             shell=False) while True:   if p.poll() is not None:     break:   outstr = process.read()   #此处会阻塞   sleep(1)   简单说明:        # *******obj.read(),obj.readline(),需要读取EOF字符或\n标志结束,会产生阻塞或溢出。*******             # *******使用obj.read(int),不等待结束符,获取足够数量(不超过obj缓存胡数量)即返回。*******     代码2: process = subprocess.Popen(cmd_string,stdout=subprocess.PIPE,\             universal_newlines=True,\             stderr=subprocess.PIPE,\             shell=False) while True:   if p.poll() is not None:     break:   outstr = process.read(1)   #此处改为read(int)形式,读到数据,就返回结果,不会阻塞   sleep(1)   运行环境,为windows,未在linux中测试。     

标签:stdout,read,阻塞,subprocess,PIPE,process,readline
From: https://www.cnblogs.com/cancode/p/18075172

相关文章

  • Dynamsoft Barcode Reader 9.6.40.NET Crack
    .NET版本-9.x发行说明9.6.40(03/14/2024)改进更新了DynamsoftBarcodeReader库和其他相应依赖库的安全性。改进并发实例License的多线程处理逻辑。提高了条码解码性能:提高了解码OneD和PDF417条形码时的准确性。提高了密集DataMatrix代码的可读性。固定的......
  • Several ports (8005, 8080) required by Tomcatv9.0 Server at localhost are alread
    'StartingTomcatv9.0Serveratlocalhost'hasencounteredaproblem.Port8080requiredbyTomcatv9.0Serveratlocalhostisalreadyinuse.Theservermayalreadyberunninginanotherprocess,orasystemprocessmaybeusingtheport.Tost......
  • Kubernetes集群节点处于Not Ready问题排查
    Kubernetes集群节点处于NotReady问题排查原创 点击关注......
  • Qt QObject::killTimer: timers cannot be stopped from another thread
    QObject::killTimer:timerscannotbestoppedfromanotherthread产生原因1定时器的事件处理所处的线程和调用定时器操作(方法)的线程不是同一个线程。2可以通过qDebug()<<QThread::currentThreadId()打印操作时的线程ID。解决思路把定时器的操作(方法:start(),sto......
  • ## 利用ThreadLocal优化获取用户基本信息(2024-3-13)
    ThreadLocal提供线程的局部变量(set和get方法)线程之间互不影响//测试类packagecom.di.bigevent;importorg.junit.jupiter.api.Test;publicclassThreadLocalTest{@TestpublicvoidtestThreadLocalSetAndGet(){ThreadLocaltl=newThreadLocal......
  • 【C++】thread 头文件无法正常使用问题
    问题当我使用MinGWGCC,在windows上编写C++程序的时候,使用thread类会无法编译,有如下错误:我使用的是c++17这个问题原因是MinGWGCC当前仍缺少标准C++11及以上版本线程类的实现。解决方案Stackoverflow上的类似问题:传送门1.下载源文件:源文件外网可能比较慢,提供C......
  • JMeter接口性能压测之阶梯加压线程组(Stepping Thread Group)
    一、前言1、阶梯式场景(负载测试):该场景主要应用在负载测试只里面,通过设定一定的并发线程数,给定加压规则,遵循“缓起步,快结束”的原则,不断地增加并发用户来找到系统的性能瓶颈,进而有针对性的进行各方面的系统优化。2、Stepping Thread Group的作用减少服务器的瞬时压力,......
  • C# 实现Thread多线程
    在C#中,可以使用Thread类来实现多线程编程。多线程是同时执行多个任务的一种方式,每个任务在一个独立的线程中运行,有着各自的执行流和上下文。使用多线程的场景:需要同时执行多个耗时的任务,以提高程序的响应性能。需要处理实时数据,比如即时通讯、数据流处理等。需要并行执行......
  • JMeter接口性能压测之线程组(Thread Group)
    一、添加线程组测试计划右键--添加--线程(用户)--线程组  二、线程组设置延迟创建线程直到需要(Delay Thread creation until needed):此选项和Ramp-up时间(秒)设置配合使用,如果选择此项,则所有线程会在需要的时候启动,即会在Ramp-up时间(秒)时间结束后启动所有线程;如果不选择这......
  • ThreadLocal 快速入门
    ThreadLocal快速入门ThreadLocal是Java中的一个类,用于创建线程局部变量。线程局部变量是一种特殊的变量,每个线程都有自己的副本,互相之间不会相互影响。这在多线程环境中非常有用,可以避免线程间共享变量导致的并发问题。定义与作用:ThreadLocal是Java中的一个类,用于......