【python-子进程PYGTK中的按钮Stop / Cancel progressBar】教程文章相关的互联网学习教程文章

python – 如何使用call调用子进程/ Popen继承环境变量【代码】

首先,对我所确定的显而易见的道歉是我对bash,shell和子进程的基本理解. 我正在尝试使用Python来自动调用一个名为Freesurfer的程序(实际上,我正在调用的子程序称为recon-all.) 如果我直接在命令行执行此操作,我将“源”一个名为mySetUpFreeSurfer.sh的脚本,除了设置三个环境变量之外什么都不做,然后“源”另一个脚本FreeSurferEnv.sh. FreesurferEnv.sh在我看来并没有做任何事情,只是设置了很多环境变量并向终端回应了一些东西,但它...

如果父在Python中被杀死,则杀死子进程【代码】

我正在从python脚本中生成5个不同的进程,如下所示:p = multiprocessing.Process(target=some_method,args=(arg,)) p.start()我的问题是,当某个父进程(主脚本)被杀死时,子进程继续运行. 当父母被杀时,有没有办法杀死这样产生的子进程? 编辑:我正在尝试这个:p = multiprocessing.Process(target=client.start,args=(self.query_interval,)) p.start() atexit.register(p.terminate)但这似乎并没有奏效解决方法:我自己遇到了同样的...

python – 在子进程启动后访问共享内存

如果数据仅在子进程生成后可用(使用multiprocessing.Process),如何让子进程访问共享内存中的数据? 我知道multiprocessing.sharedctypes.RawArray,但我无法弄清楚如何让我的子进程访问在进程已经开始之后创建的RawArray. 数据由父进程生成,并且事先不知道数据量. 如果不是GIL,我将使用线程代替,这将使这项任务更简单.使用非CPython实现不是一种选择. 在muliprocessing.sharedctypes的引擎盖下,看起来共享的ctype对象被分配了using ...

从Python子进程模块解释示例管道【代码】

python子进程模块的第17.1.4.2: Replacing shell pipeline节说要替换output=`dmesg | grep hda`同p1 = Popen(["dmesg"], stdout=PIPE) p2 = Popen(["grep", "hda"], stdin=p1.stdout, stdout=PIPE) p1.stdout.close() # Allow p1 to receive a SIGPIPE if p2 exits. output = p2.communicate()[0]对第三行的评论解释了为什么调用close函数,而不是为什么它有意义.对我来说,它没有.调用通信方法之前是否会关闭p1.stdout以防止通过管...

python – 子进程Popen阻塞PyQt GUI【代码】

我正在尝试使用PyQt为名为“HandBrake”的视频转换器应用程序构建一个简单的gui. 我的问题是,当我选择要转换的视频文件时,子进程Popen启动手刹应用程序并使用必要的args但在等待手刹完成时gui被阻止,所以我无法做任何更改. (例如:我无法禁用pushButton也不能更改其文本) 我不是在寻找更复杂的解决方案,比如进度条等.但我想在等待程序完成转换时,只需禁用按钮并更改其文本. 我怎么能用python& amp; PyQt的?def videoProcess():sel...

python – 子进程check_output返回非零退出状态1【代码】

这是我的python代码:import subprocess subprocess.check_output("ls",shell=True,stderr=subprocess.STDOUT)import subprocess subprocess.check_output("yum",shell=True,stderr=subprocess.STDOUT)第一个.check_output()运行良好,但第二个返回:Traceback (most recent call last): File "/usr/lib/x86_64-linux-gnu/gedit/plugins/pythonconsole/console.py", line 378, in __run r = eval(command, self.namespace, self.nam...

python – 超时后终止或终止子进程?【代码】

我想尽快重复执行一个子进程.但是,有时这个过程需要很长时间,所以我想杀掉它.我使用signal.signal(…)如下所示:ppid=pipeexe.pid signal.signal(signal.SIGALRM, stop_handler)signal.alarm(1) ..... def stop_handler(signal, frame):print 'Stop test'+testdir+'for time out'if(pipeexe.poll()==None and hasattr(signal, "SIGKILL")):os.kill(ppid, signal.SIGKILL)return False但有时这段代码会试图阻止下一轮执行.停止测试/...

python – 捕获崩溃的子进程的“分段错误”消息:在调用communication()之后没有输出和错误【代码】

我在使用子进程模块获取崩溃程序的输出时遇到问题.我正在使用python2.7和subprocess来调用带有奇怪参数的程序,以获得一些段错误为了调用程序,我使用以下代码:proc = (subprocess.Popen(called,stdout=subprocess.PIPE,stderr=subprocess.PIPE)) out,err=proc.communicate() print out,errcalled是一个包含程序名称和参数的列表(包含随机字节的字符串,除了子进程完全不喜欢的NULL字节) 当程序没有崩溃时代码表现并向我显示stdout和...

Python子进程.check_call vs .check_output【代码】

我的python脚本(python 3.4.3)通过子进程调用bash脚本:import subprocess as sp res = sp.check_output("bashscript", shell=True)bashscript包含以下行:ssh -MNf somehost这将打开与某个远程主机的共享主连接,以允许一些后续操作. 执行python脚本时,它会提示输入ssh行的密码,但是在输入密码后它会阻塞,并且永远不会返回.当我按ctrl-C终止脚本时,我看到连接已正确建立(因此ssh行已成功执行). 使用check_call而不是check_output时...

python – 是否可以在子进程中运行函数而无需线程化或编写单独的文件/脚本.【代码】

import subprocessdef my_function(x):return x + 100output = subprocess.Popen(my_function, 1) #I would like to pass the function object and its arguments print output #desired output: 101我只找到了使用单独脚本打开子进程的文档.有谁知道如何传递函数对象甚至是一种简单的方法来传递函数代码?解决方法:我认为你正在寻找更像多处理模块的东西: http://docs.python.org/library/multiprocessing.html#the-process-cla...

子进程中的python getoutput()等效项【代码】

参见英文答案 > Store output of subprocess.Popen call in a string 10个我想从python脚本中获取一些shell命令(如ls或df)的输出.我看到不推荐使用commands.getoutput(‘ls’),但是subprocess.call(‘ls’)只会得到返回代码. 我希望有一些简单的解决方案.解决方法:使用subprocess.Popen:import subprocess process = subprocess.Popen(['ls', '-a'], stdout=subprocess.PIPE) out, err = proc...

将子进程作为不同用户从长时间运行的Python进程运行【代码】

我有一个长期运行的,守护进程的Python进程,它使用子进程在发生某些事件时生成新的子进程.长时间运行的进程由具有超级用户权限的用户启动.我需要它生成的子进程作为不同的用户(例如,“nobody”)运行,同时保留父进程的超级用户权限. 我正在使用su -m nobody -c <program to execute as a child>但这似乎是重量级的,并不会非常干净地死去. 有没有办法以编程方式完成此操作而不是使用su?我正在查看os.set * uid方法,但Python std lib中...

python – 如何将子进程调用传递给文本文件?【代码】

subprocess.call(["/home/myuser/run.sh", "/tmp/ad_xml", "/tmp/video_xml"])现在我有一个我运行的脚本.当我运行它并且它击中这一行时,它开始打印东西,因为run.sh中有打印. 如何将其传输到文本文件? (还可以打印,如果可能的话)解决方法:如果要将输出写入文件,可以使用subprocess.call的stdout参数. 它采用None,subprocess.PIPE,文件对象或文件描述符.第一个是默认值,stdout是从父(您的脚本)继承的.第二个允许您从一个命令/进程管...

python – 管道子进程标准输出到变量【代码】

参见英文答案 > Store output of subprocess.Popen call in a string 10个我想使用子进程模块在pythong中运行命令,并将输出存储在变量中.但是,我不希望将命令的输出打印到终端.对于此代码:def storels():a = subprocess.Popen("ls",shell=True) storels()我在终端中获取目录列表,而不是将其存储在.我也尝试过:def storels():subprocess.Popen("ls > tmp",shell=True)a = open("./tmp")[Rest ...

如何在Python中使用子进程重定向输出?【代码】

我在命令行中做了什么:cat file1 file2 file3 > myfile我想用python做什么:import subprocess, shlex my_cmd = 'cat file1 file2 file3 > myfile' args = shlex.split(my_cmd) subprocess.call(args) # spits the output in the window i call my python program解决方法:更新:不鼓励使用os.system,尽管仍然可以在Python 3中使用. 使用os.system:os.system(my_cmd)如果你真的想使用子进程,这里的解决方案(主要取自子进程的文档...