我有python函数,我在maya中运行该过程。我想将该函数作为另一个进程运行,因此maya仍然会响应,我可以继续在maya上工作。
from multiprocessing import Process
def test_func(node):
# I have some crazy functions in here
pass
def run_test():
p = Process(target=test_func, args=(items,))
p.daemon = True
p.start()
这只是一个测试功能。我想展示我想要做的事情。知道在不打扰maya的情况下启动流程的聪明方法是什么?
非常感谢
答案 0 :(得分:2)
对于每个人来说,这可能并不明显,因为您很快就会解决一个关键问题......但您正试图在Autodesk Maya的会话中使用multiprocessing
。据我所知,这是行不通的。
出于高级别的原因,我相信其他人可以提供更多细节,multiprocessing.Process
想要分叉Maya进程并继续运行。这意味着它需要复制整个maya图像(如果你在场景中做很多事情,可能会超过1GB的内存),并继续运行。您通过Maya API执行的任何操作都将处于完全不同的过程中,位于不同的场景图中。此外,您很可能会死锁,因为主进程中的所有各种同步原语状态现在都按原样复制到新空间。
最好坚持使用Maya中的线程解决方案,或者外包到外部进程。即使使用线程,你也有一些与Maya API交互的能力有限,它们提供了执行主线程调用的工具,甚至可以等待他们的结果。
同样,其他任何对过程分叉和死锁有更多低级知识的人,请随意扩展这个答案。
答案 1 :(得分:0)
我没有做任何python多线程,只有c ++,但除非Process隐式使用多线程,否则它不会同时运行。查找作为标准库一部分的线程模块的文档。