0

我正在使用 python 为 Maya 2011 编写插件。为了利用我的机器(运行 Windows 7 32 位)中可用的所有内核并加快插件的性能,我使用多处理模块创建了多个进程。创建进程时,会弹出输出窗口(最初在启动 Maya 时会弹出)。为了解决这个问题,我阅读了这个讨论。当我将 mayapy.exe 设置为可执行文件时,由于新进程是使用 multiprocessing.Process(...) 创建的,因此会弹出另一个窗口(看起来像命令行窗口)。寡妇的数量与进程的数量相同,这些窗口只是随着进程的执行而出现和消失。我无法理解出现这些小窗口的原因,我不希望这些窗口弹出,请帮助。

4

3 回答 3

0

我在 Maya 中使用 subprocess.Popen 时遇到了同样的问题如果您将 startupinfo = subprocess.STARTUPINFO.wShowWindow.SW_HIDE 传递给 Popen 构造函数,这将隐藏命令行子进程窗口。阅读:http: //msdn.microsoft.com/en-us/library/ms686331%28v=vs.85%29.aspx

我猜multiprocessing.Process可能也是如此,尽管我现在不在 Windows 机器上测试它。

于 2013-06-04T19:10:45.910 回答
0

根据@tranimatronic 的回答,您应该能够使用子进程标志生成 MayaPy 的单独副本。确切的标志取决于您的操作系统:

带有隐藏窗口的跨平台子进程

但是,如果您尝试在进程之间共享场景信息,您可能会遇到问题:每个进程都是完全独立的 Maya 副本。如果这是一个大批量作业,并且您可以共享一个可以工作的只读文件(例如,您想要渲染部分动画或一次烘焙灯光),但您将无法进行并行处理在同一场景中(例如,创建几何体)。一般来说,如果您正在做一些计算密集型的事情,以至于您真正关心 Maya 中的多个内核,那么使用 C++ API 可能会更好。

另外:请注意子进程的默认 Maya 版本不使用像普通 python 这样的管道:

于 2013-06-05T05:22:59.797 回答
-1

防止python弹出控制台窗口的典型方法是在文件名“mypythonfile.pyw”的末尾添加一个'w'

于 2013-05-04T04:46:04.097 回答