【发布时间】:2022-11-14 15:18:47
【问题描述】:
在maya中调用时如何使cmds.duplicate立即执行?而不是等待整个脚本运行完后再分批执行。比如下面这个脚本,所有的执行结果都会在整个脚本执行完后立即出现
import time
for i in range(1, 6):
pm.select("pSphere{}".format(i))
time.sleep(0.5)
cmds.duplicate()
我试过使用 python 多线程,像这样
import threading
import time
def test():
for i in range(50):
cmds.duplicate('pSphere1')
time.sleep(0.1)
thread = threading.Thread(target=test)
thread.start()
#thread.join()
有时它可以成功,但有时它会使 Maya 崩溃。如果主线程加入,就达不到效果了。当我想做大量的cmds.duplicate时,会导致内存消耗非常高,程序运行越来越慢。另外,整个python脚本运行后,所有重复的结果都一起出现,所以我怀疑当我调用cmds进行复制的时候,Maya并没有完成命令的执行和输出,而是暂时把结果放到了一个容量可变的容器中。随着我调用次数的增加,容器动态扩展的过程导致程序越来越慢,内存消耗也急剧增加。因为我看到其他插件可以实时看到命令执行结果,所以我认为这应该是一个正确的方法,只是我还没有找到
【问题讨论】:
标签: python maya pymel maya-api