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
>> [email protected], http://forums.thefoundry.co.uk/
>> http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-python
>>
>
> --
> ben dickson
> 2D TD | [email protected]
> rising sun pictures | www.rsp.com.au
> _______________________________________________
> Nuke-python mailing list
> [email protected], http://forums.thefoundry.co.uk/
> http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-python
_______________________________________________
Nuke-python mailing list
[email protected], http://forums.thefoundry.co.uk/
http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-python