gpt4 book ai didi

python - 如何避免挂起 Xvfb 进程 [在使用 PyVirtualDisplay 时]?

转载 作者:太空狗 更新时间:2023-10-29 18:03:57 30 4
gpt4 key购买 nike

尝试找到如何避免在使用 PyVirtualDisplay 时在我们的 Python 应用程序中挂起 Xvfb 进程。根本问题是调用 display.stop()(参见下面的代码示例)似乎无法正确关闭 Xvfb 进程。

PyVirtualDisplay 的使用非常简单:

from pyvirtualdisplay import Display

display = Display(backend='xvfb')
display.start()

... # Some stuff happens here

display.stop()

现在,Display 类稍作修改以防止 Xvfb 使用 TCP 端口:基本上,将 -nolisten tcp 添加到执行命令中。修改是通过覆盖适当的 XfvbDisplay 类的 _cmd 属性来完成的:

@property
def _cmd(self):
cmd = [PROGRAM,
dict(black='-br', white='-wr')[self.bgcolor],
'-screen',
str(self.screen),
'x'.join(map(str, list(self.size) + [self.color_depth])),
self.new_display_var,
'-nolisten',
'tcp'
]
return cmd

在此上下文中结束 Xvfb 进程的正确方法是什么,以便它们被终止并且不会逗留?

非常感谢!

最佳答案

您的显示,因为它继承自 EasyProcess,将在 display.popen 处有一个 popen 属性。如果 EasyProcess 工作不正常,您可以使用它来终止。

所以,你可以这样做:

display.popen.terminate()

display.popen.kill()

关于python - 如何避免挂起 Xvfb 进程 [在使用 PyVirtualDisplay 时]?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18476510/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com