相关疑难解决方法(0)

捕获子进程输出

我了解到在Python中执行命令时,我应该使用子进程.我想要实现的是通过ffmpeg编码文件并观察程序输出直到文件完成.Ffmpeg将进度记录到stderr.

如果我尝试这样的事情:

child = subprocess.Popen(command, shell=True, stderr=subprocess.PIPE)
complete = False
while not complete:
    stderr = child.communicate()

    # Get progress
    print "Progress here later"
    if child.poll() is not None:
        complete = True
    time.sleep(2)
Run Code Online (Sandbox Code Playgroud)

调用child.communicate()并等待命令完成后,程序不会继续.还有其他方法可以跟随输出吗?

python subprocess

25
推荐指数
1
解决办法
3万
查看次数

将值从一个Python程序传递到另一个Python程序

是否有可能 - 除了使用.txt/dummy文件之类的东西 - 将值从一个程序传递到另一个程序?

我有一个程序,它使用.txt文件将起始值传递给另一个程序.每次运行程序时,我都会在启动程序之间更新文件中的值(十次,基本上同时).这样做很好,但是我希望将'child'程序报告在完成后返回到'mother'程序,并报告它找到的下载文件.

是否有可能在不使用11个文件的情况下执行此操作(对于'child'到'mother'报告的每个实例都有一个,而'mother'到'child'的一个文件)?我说的是完全独立的程序,而不是类或函数或类似的东西.

为了有效地运作,而不是等待几个小时完成所有事情,我需要"孩子"程序运行十次并更快地完成任务.因此,我运行子程序十次,并给每个程序一个单独的范围来检查.

两个程序都运行良好,但我希望让它们相互运行/报告,并希望不使用文件"传输"来完成任务,特别是在数据传输的子母方面.

'母亲'计划......目前

import os
import sys
import subprocess
import time

os.chdir ('/media/')

#find highest download video
Hival = open("Highest.txt", "r") 
Histr = Hival.read()
Hival.close()
HiNext = str(int(Histr)+1)

#setup download #1
NextVal = open("NextVal.txt","w")
NextVal.write(HiNext)
NextVal.close()

#call download #1
procs=[]
proc=subprocess.Popen(['python','test.py'])
procs.append(proc)
time.sleep(2)

#setup download #2-11
Histr2 = int(Histr)/10000
Histr2 = Histr2 + 1

for i in range(10):
    Hiint = str(Histr2)+"0000"
    NextVal = open("NextVal.txt","w")
    NextVal.write(Hiint)
    NextVal.close()

    proc=subprocess.Popen(['python','test.py'])
    procs.append(proc)
    time.sleep(2)
    Histr2 = Histr2 + …
Run Code Online (Sandbox Code Playgroud)

python ipc

3
推荐指数
2
解决办法
2676
查看次数

标签 统计

python ×2

ipc ×1

subprocess ×1