子进程以#开头
subprocess.Popen(arg)
Run Code Online (Sandbox Code Playgroud)
如果父母异常终止,有没有办法确保它被杀死?我需要这个在Windows和Linux上都可以工作.我知道这个Linux解决方案.
编辑:
subprocess.Popen(arg)如果使用不同的启动流程的方法存在解决方案,则可以放宽启动子流程的要求.
我正在使用启动各种子流程的第三方库.当有异常时我想杀死所有子进程.我如何获得儿童pids列表?
我在Windows 8/XP上使用Python 2.7.
我有一个程序A使用以下代码运行另一个程序B:
p = Popen(["B"], stdout=PIPE, stderr=PIPE)
stdout, stderr = p.communicate()
return
Run Code Online (Sandbox Code Playgroud)
B运行批处理脚本C. C是一个长时间运行的脚本,我希望B退出,即使C还没有完成.我使用以下代码完成了它(在B中):
p = Popen(["C"])
return
Run Code Online (Sandbox Code Playgroud)
当我运行B时,它按预期工作.然而,当我运行A时,我预计它会在B退出时退出.但是A等到C退出,即使B已经退出了.关于发生了什么以及可能的解决方案的任何想法?
不幸的是,将A改为看起来像B的明显解决方案不是一种选择.
以下是用于说明此问题的功能示例代码:https: //www.dropbox.com/s/cbplwjpmydogvu2/popen.zip?dl = 1
任何输入都非常感谢.
以前曾经问过,但我在代码中找不到明确的答案.
我打开一个进程,ProcessA(带有PID 1234).此过程打开子进程ProcessAB(PID 5678).在我完成后,我终止了ProcessA,但我仍然有ProcessAB的挥之不去.
如何终止整个进程树?我的意思是,我如何确保如果我终止我打开的流程,我也会终止所有相关流程?
谢谢
代码表示赞赏.
我正在使用多处理模块进行并行处理.Bellow代码片段在X位置搜索字符串文件名并返回找到字符串的文件名.但在某些情况下,搜索过程需要很长时间,所以我试图用超过300秒的时间来终止搜索过程.为此我使用超时== 300,如下所示,这会杀死搜索过程,但它会杀死孩子过程由波纹管代码产生.
我试图找到多种方式,但没有成功:/
如何从Pool中删除父进程及其子进程?
import os
from multiprocessing import Pool
def runCmd(cmd):
lresult = os.popen(cmd).read()
return lresult
main ():
p = Pool(4)
data_paths = [list of paths of store data]
search_cmds = [ "SearchText.exe %s < %s"%(data_path, filename) for data_path in data_paths ]
results = [p.apply_async(runCmd, (cmd,), callback = log_result) for cmd in search_cmds]
try:
for result in results:
root.append(result.get(timeout=300))
#rool holds the result of search process
except TimeoutError:
for c in multiprocessing.active_children():
print '----->',c.pid
os.kill(c.pid, signal.SIGTERM)
p.close()
p.join()
if …Run Code Online (Sandbox Code Playgroud) 我如何在Windows上杀死进程?
我正在开始这个过程
self.p = Process(target=self.GameInitialize, args=(testProcess,))
self.p.start()
Run Code Online (Sandbox Code Playgroud)
我试过了
self.p.kill()
self.p.terminate()
os.kill(self.p.pid, -1)
os.killpg(self.p.pid, signal.SIGTERM) # Send the signal to all the process groups
Run Code Online (Sandbox Code Playgroud)
错误
Process Object has no Attribute kill
Process Object has no Attribute terminate
Access Denied
Run Code Online (Sandbox Code Playgroud)
我不能用 .join.
我试图在 Tkinter python 中创建一个 GUI。我想将工具的输出显示到我的 Tkinter 界面。该工具在命令行中运行良好,但它是一个连续扫描器。有点像一个连续的 ping(我的意思是 Linux 中没有选项的 ping 命令)。
现在的问题是因为 ping 的输出永远不会完成,因此我无法在 Tkinter 中打印输出。它还使我的应用程序冻结。几秒钟后我也无法停止命令以显示输出。 在 PHP 中使用实时输出运行进程 我发现上面的链接对 php 很有帮助,但是如何在 python 中转换此代码:
这是我想在 tkinter 框架上显示的一些示例代码
#!/usr....
import subprocess
x = subprocess.call(["ping", "127.0.0.1"])
print x
Run Code Online (Sandbox Code Playgroud)
这在命令行上效果很好,但我没有在 tkinter 界面上获得输出。
首先,我想说我刚开始学习python,我想在我的python脚本中执行maven命令(见下面的部分代码)
os.system("mvn surefire:test")
但不幸的是,有时这个命令会超时,所以我想知道如何设置一个超时阈值来控制这个命令。
也就是说,如果执行时间超过 X 秒,程序将跳过命令。
更重要的是,其他有用的解决方案可以解决我的问题吗?提前致谢!
python ×6
subprocess ×3
process ×2
python-3.x ×2
timeout ×2
windows ×2
c ×1
kill ×1
linux ×1
os.system ×1
popen ×1
python-2.7 ×1
terminate ×1
tkinter ×1