I am curious if it is possible to clock how long it takes to cook a surface operator and interrupt if it goes above a certain limit, preferably within a python SOP?
Backstory; there are cases when a polyexpand2D node takes excessively long time to cook. I've contacted SideFX for this unexpected behavior. Long story short, this is what they recommended:
And it does, when you translate the input geometry of the ‘polyexpand2d’ SOP the results do vary. So now I am trying to figure out a way to clock a particular section of the network tree, and if it takes longer than X amount of time, I want to translate the input ever so slightly. Hopefully this will help it so it doesn't take +1 hour to cook (average is somewhere between 1-5 seconds). I have been looking into hou.perfMon but that didn't really lead me anywhere. Let me know if anyone has any suggestions.
Pseudo Code:
import time
trans_node = hou.node("../translate1")
cook_node = hou.node("../COOK_THIS")
start = time.time()
time_limit = 5.0
rot= 0.0
while current_time < time_limit:
try:
cook_node.cook()
except Timeout:
rot= random(0.0, 360.0)
trans_node.parm("rx").set(rot)
cook_node.cook()
continue
Thank you!