以编程方式为基于Python的OpenGL程序设置NVOptimuseNablem

以编程方式为基于Python的OpenGL程序设置NVOptimuseNablem,python,opengl,pyqt5,nvidia,optimus,Python,Opengl,Pyqt5,Nvidia,Optimus,有没有一种方法可以在Python脚本中使用OpenGL(尤其是那些使用Qt的应用程序)以编程方式为基于Python的应用程序设置NvOptimusEnablement标志 到目前为止,我看到的所有引用(例如or)都是针对C/C++的,其中需要将标志设置为编译到可执行文件中的全局定义,但显然在这种情况下不起作用 以下是唯一的选择: 使用此标志集创建自定义Python解释器包装(例如),或 强制用户显式地标记Python/pySturier-Basic二进制文件,要求它们使用的英伟达GPU每台机器使

有没有一种方法可以在Python脚本中使用OpenGL(尤其是那些使用Qt的应用程序)以编程方式为基于Python的应用程序设置NvOptimusEnablement标志

到目前为止,我看到的所有引用(例如or)都是针对C/C++的,其中需要将标志设置为编译到可执行文件中的全局定义,但显然在这种情况下不起作用

以下是唯一的选择:

  • 使用此标志集创建自定义Python解释器包装(例如),或
  • <>强制用户显式地标记Python/pySturier-Basic二进制文件,要求它们使用的英伟达GPU每台机器使用<
    问题是,在创建进程时,系统必须知道这些标志。这是有意义的,因为在这一点上,GPU资源可以开始分配。它们仅在从运行的可执行文件或静态链接到它的库中公开时才起作用,而不会与动态链接的库一起工作

    因此,除了运行一个Python解释器,没有其他方法可以用这个标志编译,或者配置哪个图形处理器<代码> python .exe <代码>应该使用英伟达控制面板。 但是,当您使用pyinstaller发布应用程序时,可以编译引导加载程序以公开这些标志,因为它是程序的入口点。您只需将其添加到main.c:(或使用我的pyinstaller分支:)

    这篇文章解释了如何做到这一点:

    __declspec(dllexport) unsigned long NvOptimusEnablement = 0x00000001;
    __declspec(dllexport) int AmdPowerXpressRequestHighPerformance = 1;