ubuntu18.04server服务器系统下为python安装虚拟显示器 (使用jupyter notebook在web端播放openai的gym下保存的运行视频——需安装ipython)

wx62830f4b679a4

ubuntu18.04server服务器系统下为python安装虚拟显示器 (使用jupyter notebook在web端播放openai的gym下保存的运行视频——需安装ipython)

1.  安装xvfb

sudo apt-get install xvfb

ubuntu18.04server服务器系统下为python安装虚拟显示器  (使用jupyter notebook在web端播放openai的gym下保存的运行视频——需安装ipython)_Linux

Xvfb是流行的虚拟现实库,可以使很多需要图形界面的程序虚拟运行。

2. 安装pyvirtualdisplay

pyvirtualdisplay 是Xvfb的 python 封装。

pip install pyvirtualdisplay

3.  在 Ubuntu 上安装 OpenGL Library

sudo apt-get install libgl1-mesa-dev

4.  安装 python-opengl

sudo apt-get install python-opengl

注:

如果不安装 python-opengl 运行图形显示的应用时报错:

ubuntu18.04server服务器系统下为python安装虚拟显示器  (使用jupyter notebook在web端播放openai的gym下保存的运行视频——需安装ipython)_Python_02


测试代码:

from pyvirtualdisplay import Display
import gym

display = Display(visible=0, size=(1024, 768))
display.start()

env_id = "CartPole-v0"
env = gym.make(env_id)

env.reset()
env.render()


display.stop()

ubuntu18.04server服务器系统下为python安装虚拟显示器  (使用jupyter notebook在web端播放openai的gym下保存的运行视频——需安装ipython)_服务器_03


如果只是为了在服务器上把具有图像显示功能的程序跑起来的话那么上面的内容就可以了,但是一般需要使用在服务器上运行图像显示功能的应用一般都是运行爬虫和运维等需求,但是在机器学习中则是主要在使用open_ai下的gym来运行可以显示图像的应用,下面部分介绍使用jupyter notebook在web端播放openai的gym下保存的运行视频。(注意:本文中所介绍的所有功能和方法都不支持与服务器虚拟显示下图像界面进行交互的功能)


使用jupyter查看openai的gym下保存的运行视频:

1.  安装视频编解码工具  ffmpeg

sudo apt install ffmpeg

经过验证在Ubuntu18.04系统中使用系统安装ffmpeg容易报错,如下:

Unknown encoder 'libx264'的解决方法

ubuntu18.04server服务器系统下为python安装虚拟显示器  (使用jupyter notebook在web端播放openai的gym下保存的运行视频——需安装ipython)_ide_04


ubuntu18.04server服务器系统下为python安装虚拟显示器  (使用jupyter notebook在web端播放openai的gym下保存的运行视频——需安装ipython)_Linux_05


于是,使用conda 安装  ffmpeg :

conda install ffmpeg

conda uninstall ffmpeg

ubuntu18.04server服务器系统下为python安装虚拟显示器  (使用jupyter notebook在web端播放openai的gym下保存的运行视频——需安装ipython)_ide_06


测试代码:

from pyvirtualdisplay import Display
import gym

display = Display(visible=0, size=(1024, 768))
display.start()

env_id = "CartPole-v0"
env = gym.make(env_id)
env = gym.wrappers.Monitor(env, "videos", force=True)

env.reset()

while True:
env.render()
state, reward, end_flag, info = env.step(env.action_space.sample())
print(state, reward, end_flag, info)
if end_flag == True:
break


display.stop()

ubuntu18.04server服务器系统下为python安装虚拟显示器  (使用jupyter notebook在web端播放openai的gym下保存的运行视频——需安装ipython)_ide_07

成功运行,可以查看到保存的视频文件:

ubuntu18.04server服务器系统下为python安装虚拟显示器  (使用jupyter notebook在web端播放openai的gym下保存的运行视频——需安装ipython)_python_08

2.   安装  ipython

pip install ipython

测试代码:

import base64
import glob
import io
import os

from IPython.display import HTML, display


def ipython_show_video(path: str) -> None:
"""Show a video at `path` within IPython Notebook."""
if not os.path.isfile(path):
raise NameError("Cannot access: {}".format(path))

video = io.open(path, "r+b").read()
encoded = base64.b64encode(video)

display(HTML(
data="""
<video alt="test" controls>
<source src="data:video/mp4;base64,{0}" type="video/mp4"/>
</video>
""".format(encoded.decode("ascii"))
))


list_of_files = glob.glob("videos/*.mp4")
latest_file = max(list_of_files, key=os.path.getctime)
print(latest_file)
ipython_show_video(latest_file)


备注:需要在测试文件所在文件夹下面建立 videos 文件夹,并且在videos文件夹下面需要有 mp4文件。

ubuntu18.04server服务器系统下为python安装虚拟显示器  (使用jupyter notebook在web端播放openai的gym下保存的运行视频——需安装ipython)_服务器_09



ubuntu18.04server服务器系统下为python安装虚拟显示器  (使用jupyter notebook在web端播放openai的gym下保存的运行视频——需安装ipython)_Linux_10


ubuntu18.04server服务器系统下为python安装虚拟显示器  (使用jupyter notebook在web端播放openai的gym下保存的运行视频——需安装ipython)_ide_11


Python中utility模块 python utility

通常linux系统的基础信息如内存、cpu等这些都是通过shell来获取。不过python的psutil模块把shell查看系统基础信息的功能都包装了下,使用更加简单,功能丰富。shell 命令如下: 物理内存total 值: free -m | grepMem | awk '{print $2}' 物理内存used 值: free -m | grepMem | awk '{print $3}'