Thanks for the help guys! Gonna try the tips. 


On Jul 29, 2014, at 3:50 AM, Ben Dickson wrote:

> Threading is unnecessary for this - you can still use ProgressTask
> usefully while blocking the main thread:
> 
> def createBlurNodes():
>    t = nuke.ProgressTask("Creating Blurs")
>    num = 1000
>    for i in range(num):
>        if t.isCancelled():
>            raise RuntimeError("Cancelled")
> 
>        nuke.createNode('Blur', '', False)
>        t.setProgress(int(100 * ((i-1) / num)))
>        t.setMessage("Created %d of %d" % (i+1, num))
> 
> createBlurNodes()
> 
> 
> This way you still block the UI, which is probably desirable (otherwise
> what happens if, say, the user arbitrarily deletes one of your
> TimeOffset nodes?), but the ProgressTask means the UI still redraws, you
> can click the cancel button and so on.
> 
> 
> On 28/07/14 22:25, Bram Buddingh wrote:
>> Hi everybody,
>> 
>> I am working on a python script that creates more than 25 read nodes with 
>> approximately 30 timeOffset nodes connected to each of them. So I end up 
>> with a script containing something like 1000 nodes. This could be extended 
>> later, depending on the needs.
>> 
>> This is quite compute intensive to run. The main nuke thread/window freezes 
>> and you don’t know how long you have to wait until it’s finished. I am 
>> trying to put this in a separate thread with a status bar. The problem is 
>> that the threaded way is even slower than without putting it in a separate 
>> thread. To make it a bit clear, I wrote some python lines to demonstrate 
>> what I am trying to do:
>> 
>> 
>> --------------------------------------------------------------------------------------------
>> import threading
>> 
>> ### option 1: even slower than option 2 ###
>> def createBlurNodes():
>>    task = nuke.ProgressTask("Create")
>>    task.setMessage("Creating blur nodes")
>> 
>>    for i in range(1000):
>>        nuke.executeInMainThreadWithResult(nuke.createNode, args = ('Blur', 
>> '', False))
>>        task.setProgress(i/10)
>> 
>> threading.Thread(None, createBlurNodes).start()
>> 
>> 
>> ### option 2: slow and I don't have visible feedback about the estimated 
>> calculation time. Plus nuke is freezing for a couple of seconds, depending 
>> on your machine specs. ###
>> for i in range(1000):
>>    nuke.createNode('Blur', '', False)
>> 
>> --------------------------------------------------------------------------------------------
>> 
>> Maybe it’s slow because nuke.createNode is always running in the main thread?
>> 
>> Is this the correct way, or is there a better way to script this?
>> Thanks for the help in advance!
>> 
>> Bram Buddingh_______________________________________________
>> Nuke-python mailing list
>> Nuke-python@support.thefoundry.co.uk, http://forums.thefoundry.co.uk/
>> http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-python
>> 
> 
> -- 
> ben dickson
> 2D TD | ben.dick...@rsp.com.au
> rising sun pictures | www.rsp.com.au
> _______________________________________________
> Nuke-python mailing list
> Nuke-python@support.thefoundry.co.uk, http://forums.thefoundry.co.uk/
> http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-python

_______________________________________________
Nuke-python mailing list
Nuke-python@support.thefoundry.co.uk, http://forums.thefoundry.co.uk/
http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-python

Reply via email to