吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1152|回复: 1
收起左侧

[求助] subprocess.Popen读取stdout内容阻塞的问题

[复制链接]
junjie0927 发表于 2020-6-4 17:01
[Python] 纯文本查看 复制代码
#test2.py

import sys,time
while True:
    line = sys.stdin.readline()
    time.sleep(50)
    if line:
        sys.stdout.write(line)
        sys.stdout.flush()
    time.sleep(1)


[Python] 纯文本查看 复制代码
#run2.py
import shlex
import sys
from subprocess import *
shell_cmd = 'python C:/Users/Administrator/Desktop/test/subprocess/test2.py'
cmd = shlex.split(shell_cmd)
proc = Popen(cmd,stdin=PIPE,stdout=PIPE,stderr=STDOUT)
 
line = input('请输入:')
while line != 'q':
    proc.stdin.write(bytes(line,'utf-8'))
    proc.stdin.write(bytes("\n",'utf-8'))
    proc.stdin.flush()
    output = proc.stdout.readline()
    print(output.decode('utf-8'))
    #sys.stdout.write(output)
    sys.stdout.flush()
    line = input('请输入:')


我在test1.py里面加入的time.sleep(50)是为了测试run2.py里的out = proc.stdout.readline()是否会阻塞。

结果就是当管道里面没有内容的时候。
out = proc.stdout.readline()
就一直阻塞,一直到有内容读取的时候才下一步执行代码。
请问各位大神,有没有什么办法可以让out = proc.stdout.readline()不阻塞?

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

dazhuangzhuang 发表于 2020-6-5 09:53
本帖最后由 dazhuangzhuang 于 2020-6-5 09:59 编辑

看看这个是否对你有启发
子进程中的sys.stdin.read()永不返回
https://www.icode9.com/content-3-554706.html
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-26 15:27

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表