我正在使用python为Maya 2011编写一个插件。为了利用我的机器中可用的所有内核(运行Windows 7 32位)并加快插件的性能,我使用多处理模块创建了多个进程。创建进程时,弹出输出窗口(在启动Maya时最初会弹出)。为了解决这个问题,我阅读了this讨论。当我将mayapy.exe设置为可执行文件时,由于使用multiprocessing.Process(...)创建了新进程,会弹出另一个窗口(看起来像命令行窗口)。寡妇的数量与进程的数量相同,这些窗口刚刚出现并随着进程最终执行而消失。 我无法理解出现这些小窗户的原因,我不希望这些窗口弹出,请帮忙。
答案 0 :(得分:0)
阻止python弹出控制台窗口的典型方法是在文件名“mypythonfile.pyw”的末尾添加一个“w”
答案 1 :(得分: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框中进行测试。
答案 2 :(得分:0)
根据@tutimatronic的回答,您应该能够使用子进程标志生成单独的MayaPy副本。确切的标志取决于您的操作系统:
Cross-platform subprocess with hidden window
但是,如果您尝试在进程间共享场景信息,则可能会遇到问题:每个进程都是Maya的完全独立副本。如果这是一个很大的批处理作业,你可以共享一个只读文件(例如,你想要渲染一部分动画或者一次烤一个灯),这将起作用,但你将无法进行并行处理在同一场景中(例如,创建几何体)。一般来说,如果你正在做一些计算密集的事情,以至于你真的关心Maya中的多个内核,你可能会更好地使用C ++ API。
另外:请注意default maya version of subprocess doesn't use pipes like ordinary python:
这一事实