我正在使用Python(Vizard)在笔记本电脑上远程启动虚拟现实环境。我需要远程操作,因为笔记本电脑是关闭的,用户也戴着头戴式显示器,把它放在背包里。我可以打开网络连接并发送命令,使虚拟现实环境加载到笔记本电脑上,但如果不完全关闭Vizard,我无法关闭环境。在
为了启动,我添加了一个网络,如下所示:
myNetwork = viz.addNetwork('computer_name')
然后使用网络事件回调等待网络消息:
def onNetwork(e):
loadWorld(e.preferences)
viz.callback(viz.NETWORK_EVENT, onNetwork)
def loadWorld(preferences):
<<...>>
因此,这很好地工作,并且使用preferences
中指定的首选项将播放器引导到虚拟现实环境中。但如果我在网络上再发一条信息,新世界就叠加在旧世界之上,似乎没有一种有效的方法可以整齐地关闭虚拟现实环境。在
因为我无法以一种像样的方式解构虚拟现实环境,所以从一开始就重新启动整个程序似乎更好。Vizard中有一个命令,viz.quit()
,但是如果我在loadWorld
函数调用之前插入这个命令,程序将完全停止运行,并且永远不会到达loadWorld
。所以,我想知道是否有另一种方法可以做到这一点:关闭程序,但让整个脚本循环运行,这样当程序关闭时,它会立即重新启动。在
问题是:如何告诉Python脚本关闭并释放所有资源,然后在之后立即重新启动自己?在
上面的答案不会关闭打开的文件对象和描述符,请参见os.execv(),因此应该在执行}刷新打开的文件对象和描述符。在
os.execv()
之前进行清理,正如python文档中所述,可以使用sys.stdout.flush()
或{不确定vizard,但如果您只需要重新启动脚本,这是一种方法。在
调用
restart()
将使用相同的参数重新启动脚本。在我可以确认,对于一个普通的老python脚本,在一个有可执行权限的*nix环境中,它的头部有一个shebang,希望这能帮助您解决vizard问题
相关问题 更多 >
编程相关推荐