Articles of 子

Pythonsubprocess在返回输出之前在后台运行

我有一些我想用perf进行debugging的Python代码。 为此,我想使用subprocess。 以下命令返回进程的指令相关信息,直到通过Ctrl ^ C退出命令。 perf stat -p <my_pid> 现在,我想在后台运行Python代码,直到我希望能够终止它的操作并打印命令输出。 展现我的意思: x = subprocess.call(["perf","stat","-p",str(GetMyProcessID())]) .. CODE TO DEBUG .. print x # I want to terminate subprocess here and output 'x' 现在,我想确定在'print x'行中要做些什么来终止进程并检查输出。 任何想法/帮助表示赞赏。 欢呼声和感谢提前,

如何确定通过os.system启动的进程的PID

我想用程序启动几个子foo.py ,即模块foo.py启动foo.py几个实例。 由于我有时不得不手动终止进程,我需要进程id来执行kill命令。 即使整个设置是相当“脏”,是否有一个良好的pythonic方式来获得进程的pid ,如果进程是通过os.system启动? foo.py: import os import time os.system("python bar.py \"{0}\ &".format(str(argument))) time.sleep(3) pid = ??? os.system("kill -9 {0}".format(pid)) bar.py: import time print("bla") time.sleep(10) % within this time, the process should be killed print("blubb")

如何获得进程的祖父母身份证

我怎样才能得到当前进程的父进程ID? 一般给一个进程ID我怎么能得到它的父进程ID? 比如os.getpid()可以用来获取父进程的id和os.getppid(),我如何得到祖父母, 我的目标是Linux(Ubuntu的),所以平台的具体答案是好的。

如何从subprocess.Popen()获取输出

我想从执行Test_Pipe.py输出,我试过在Linux上的代码,但它没有工作。 Test_Pipe.py import time while True : print "Someting …" time.sleep(.1) Caller.py import subprocess as subp import time proc = subp.Popen(["python", "Test_Pipe.py"], stdout=subp.PIPE, stdin=subp.PIPE) while True : data = proc.stdout.readline() #block / wait print data time.sleep(.1) proc.stdout.readline()被封锁,所以没有数据打印出来。

如何从Python(2.7)中产生的进程中消除Windows控制台?

可能重复: 在没有控制台的情况下用Popen在pythonw中运行一个进程 我在Windows上使用python 2.7来使用dcraw和PIL自动化批量RAW转换。 问题是我打开一个Windows控制台,每当我运行dcraw(这发生每隔几秒钟)。 如果我使用.py作为脚本来运行脚本,那么它就不那么烦人了,因为它只能打开主窗口,但我更愿意只显示GUI。 我如此参与: args = [this.dcraw] + shlex.split(DCRAW_OPTS) + [rawfile] proc = subprocess.Popen(args, -1, stdout=subprocess.PIPE) ppm_data, err = proc.communicate() image = Image.open(StringIO.StringIO(ppm_data)) 感谢里卡多·雷耶斯 对于这个配方的小修改,在2.7中,似乎你需要从_subprocess获得STARTF_USESHOWWINDOW (如果你想要的东西可能不太容易改变,你也可以使用pywin32 ),所以对于后人来说: suinfo = subprocess.STARTUPINFO() suinfo.dwFlags |= _subprocess.STARTF_USESHOWWINDOW proc = subprocess.Popen(args, -1, stdout=subprocess.PIPE, startupinfo=suinfo)

在Windows中复制fork()的最佳方法是什么?

我如何实现一些逻辑,使我能够在Windows上使用Python在fork()系统调用时重现Linux上的function? 我特别试图在SAPI Com组件上执行一个方法,同时继续主线程中的其他逻辑而不会阻塞或等待。

用选定的浏览器启动IPython笔记本

我试图用非默认浏览器(在我的情况下Firefox)启动IPython,并认为我可以复制此博客中给出的脚本复制 我在Windows 7上 我把下面的代码放在一个文件中说“module.py” import subprocess subprocess.call("ipython notebook –no-browser", shell=True) subprocess.call([r'C:\Program Files (x86)\Mozilla Firefox\Firefox.exe', '-new-tab', 'http://127.0.0.1:8888/']) 但是,当我从命令行运行它 python C:\Users\mugabal\Desktop\module1.py 它执行第一行但不是第二行(两行都单独工作) 我的问题(更笼统地说)如何启动一个进程并告诉它不要劫持控制台窗口? 我提前道歉,如果我监督了一个明显的解释,但我在子stream程文档和这个平台上看 —–更新—– 我应该补充说,我试图用选定的浏览器启动IPython,但无法弄清楚如何让它工作 >ipython notebook –browser='C:\Program Files (x86)\Mozilla Firefox\Firefox.exe' … [NotebookApp] The IPython Notebook is running at: http://127.0.0.1:8888/ … **[NotebookApp] No web browser found: could not locate runnable browser.** 确切地说,Windows命令提示符窗口中的以下命令按预期工作: start firefox 但 ipython […]

如何在默认程序中启动文件,然后在脚本结束时closures文件?

概要 我有wxPython GUI,它允许用户打开文件来查看。 目前我用os.startfile()做到这一点。 不过,我已经知道这不是最好的方法,所以我正在寻求改进。 startfile()的主要缺点是一旦启动文件,就无法控制文件。 这意味着用户可以将文件保留为打开状态,以便其他用户不可用。 我在找什么 在我的GUI中,可以有孩子的窗户。 我通过将GUI对象存储在列表中来跟踪所有这些,然后当父对象closures时,我只是遍历列表并closures所有的子对象。 我想对用户select的任何文件做同样的事情。 我怎样才能启动一个文件,并保留一个python对象,以便我可以closures它的命令? 提前致谢 我的一个解决scheme的梦想 以这样一种方式启动文件,即可以在函数之间传递一个Python对象 以某种方式在默认程序中启动文件并返回PID 一种用文件名检索PID的方法 目前的进展 这是我打算使用的框架。 重要的位是FileThread类的run()和end()函数,因为这是解决scheme将要去的地方。 import wx from wx.lib.scrolledpanel import ScrolledPanel import threading import os class GUI(wx.Frame): def __init__(self): wx.Frame.__init__(self, None, -1, 'Hey, a GUI!', size=(300,300)) self.panel = ScrolledPanel(parent=self, id=-1) self.panel.SetupScrolling() self.Bind(wx.EVT_CLOSE, self.OnClose) self.openFiles = [] self.openBtn = wx.Button(self.panel, -1, […]

Pythonsubprocess。在Windows上以不同的用户身份打开

在Windows上用Python启动一个subprocess的最佳方式是什么? 最好XP和以上,但如果它只适用于Vista和7,我也可以忍受。

Subprocess.call或Subprocess.Popen不能使用PATH(Linux / Windows)中的可执行文件

我正在编写一个程序,需要在Linux和Windows上运行,并使用path中存在的可执行文件(带有参数)。 (假定) 目前,我在使用Subprocess.Call和Subprocess.Popen在Windows中运行可执行文件时遇到问题。 对于这样的代码,在Windows 8中 def makeBlastDB(inFile, inputType, dbType, title, outDir): strProg = 'makeblastdb' strInput = '-in ' + inFile strInputType = '-input_type ' + inputType strDBType = '-dbtype ' + dbType strTitle = '-title ' + title strOut = '-out ' + os.path.join(os.sep, outDir, title) cmd = [strProg, strInput, strInputType, strDBType, strTitle, strOut] result […]