相关疑难解决方法(0)

停止在Python中读取进程输出而不挂起?

我有一个Linux的Python程序几乎看起来像这样:

import os
import time

process = os.popen("top").readlines()

time.sleep(1)

os.popen("killall top")

print process
Run Code Online (Sandbox Code Playgroud)

该程序挂起在这一行:

process = os.popen("top").readlines()
Run Code Online (Sandbox Code Playgroud)

这种情况发生在保持更新输出的工具中,如"Top"

我最好的考验:

import os
import time
import subprocess

process = subprocess.Popen('top')

time.sleep(2)

os.popen("killall top")

print process
Run Code Online (Sandbox Code Playgroud)

它比第一个(它被砍掉)效果更好,但它返回:

<subprocess.Popen object at 0x97a50cc>
Run Code Online (Sandbox Code Playgroud)

第二次试验:

import os
import time
import subprocess

process = subprocess.Popen('top').readlines()

time.sleep(2)

os.popen("killall top")

print process
Run Code Online (Sandbox Code Playgroud)

和第一个一样.它由于"readlines()"而被绞死

它的返回应该是这样的:

top - 05:31:15 up 12:12,  5 users,  load average: 0.25, 0.14, 0.11
Tasks: 174 total,   2 running, 172 sleeping,   0 stopped,   0 zombie
Cpu(s):  9.3%us, …
Run Code Online (Sandbox Code Playgroud)

python subprocess hung multiprocessor

14
推荐指数
1
解决办法
8684
查看次数

标签 统计

hung ×1

multiprocessor ×1

python ×1

subprocess ×1