如何解决以编程方式为基于Python的OpenGL程序设置NvOptimusEnablement
是否可以通过Python脚本为使用OpenGL(特别是使用Qt的应用)以编程方式为基于Python的应用设置NvOptimusEnablement标志?
到目前为止我所看到的所有参考资料-例如Programmatically selecting integrated graphics in nVidia Optimus或https://stackoverflow.com/a/39047129/6531515-用于C / C ++,其中标志需要设置为全局定义,并编译到可执行文件中,但是显然在这种情况下不起作用。>
是唯一的选择:
- 使用此标志集(例如https://github.com/cprogrammer1994/optimuspy)创建自定义Python解释器包装,或
- 强迫用户将Python / pyinstaller-created-binary明确标记为在使用的每台计算机上需要Nvidia GPU吗?
解决方法
问题是在创建进程时系统必须知道这些标志。这是有道理的,因为此时可以开始分配 GPU 资源。它们仅在从正在运行的可执行文件或静态链接到它的库中公开时才起作用,它不适用于动态链接的库。
因此,除了运行已使用此标志编译的 Python 解释器,或从 Nvidia 控制面板配置应使用哪个图形处理器 {"_mongo":{"slaveOk":false,"host":"127.0.0.1:27017","defaultDB":"test","_defaultSession":{"_serverSession":{"client":{},"handle":{}},"_isExplicit":false},"_readMode":"commands","promptPrefix":"","authStatus":{"authRequired":true,"replSetGetStatus":false,"isMaster":true}},"_db":{"_mongo":{"slaveOk":false,"_name":"employment_center","_session":{"_serverSession":{"client":{},"_isExplicit":false}},"_collection":{"_mongo":{"slaveOk":false,"_shortName":"skill","_fullName":"employment_center.skill"},"_ns":"employment_center.skill","_query":{"_id":{"$oid":"60938a9e404697a534d18a84"}},"_fields":null,"_limit":0,"_skip":0,"_batchSize":0,"_options":0,"_cursor":null,"_numReturned":0,"_special":false}
之外,别无他法。
但是,当您使用 pyinstaller 发布应用程序时,可以编译引导加载程序以公开这些标志,因为它是您程序的入口点。你只需要将它添加到 main.c: (或使用我的 pyinstaller 分支:https://github.com/pvallet/pyinstaller)
Python.exe
这篇文章解释了如何去做:how to recompile the bootloader of Pyinstaller
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。