首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何避免[在使用PyVirtualDisplay时]挂起Xvfb进程?

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

Stack Overflow用户
提问于 2013-08-27 22:28:07
回答 3查看 7.6K关注 0票数 12

当使用PyVirtualDisplay时,试图找出如何避免在我们的Python应用程序中挂起Xvfb进程。根本的问题是调用display.stop() (请参阅下面的代码示例)似乎没有正确关闭Xvfb进程。

PyVirtualDisplay非常简单地被使用:

代码语言:javascript
复制
from pyvirtualdisplay import Display

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

... # Some stuff happens here

display.stop()

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

代码语言:javascript
复制
@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进程的正确方法是什么,这样就可以终止Xvfb进程而不再停留了?

非常感谢!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-09-16 15:25:56

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

所以,你可以这样做:

代码语言:javascript
复制
display.popen.terminate()

代码语言:javascript
复制
display.popen.kill()
票数 8
EN

Stack Overflow用户

发布于 2016-02-15 22:05:57

The answer by Jordan不是为我工作的。这样做是有效的:

代码语言:javascript
复制
display.sendstop()
票数 8
EN

Stack Overflow用户

发布于 2022-05-04 17:09:30

这些解决方案对我都没有用。它说display没有属性sendstop或popen。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18476510

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档