Hi Justin,

Thanks a million !
I will try this as soon as I have access to maya again.
Its a shame that the .set_executable() function is windows only. As that
would have been a great solution. However being able to use the standard
interpreter is a great alternative!.

I will get back to you asap with the test results.

Jan



2013/2/8 Justin Israel <justinisr...@gmail.com>

> I am not sure what platform you are running, but on OSX this is even more
> problematic. It creates orphaned processes that don't close and keep
> spinning the cpus.
>
> The problem, as I understand it, is that the multiprocessing module needs
> to be able to fork, copy the memory, and start up the same interpreter
> again. But Maya is using an embedded python interpreter and it thinks it
> needs to start up Maya in the new processes, which crashes. On windows, the
> multiprocessing module has the .set_executable() function:
>
> http://docs.python.org/2/library/multiprocessing.html#multiprocessing.set_executable
> But I don't have windows to test trying to set this to a valid python
> interpreter, and it is not even platform independent as a solution.
>
> What I have gotten to work just fine is the workflow of running your
> script in a subprocess, and communicating the results back over the pipe.
> This allows multiprocessing to run under whatever standard python
> interpreter you want, and is independent of Maya.
>
> There are two files here:
> https://gist.github.com/justinfx/4741527
>
> The first one is a modified version of your original code.
> The second is the snippet to launch the subprocess from Maya and read the
> results.
>
> -- justin
>
>
>
> On Feb 8, 2013, at 6:04 AM, Jan: wrote:
>
> Hi,
>
> i'm trying to use the python multiprocessing module to make my script
> "multi-threaded".
>
> However every time it tries to start a new process it loads up the "output
> window" with command line on how to load the maya batch process.
> When I close the window the process closes as well and the function is
> never called or it locks up.
> Unfortunately I have no idea how I can pass command line info from the
> multiprocessing function.
>
> So my question is:
> How can I load a multiprocessing process without having the output window
> pop up and the process running properly.
>
> Any help would be much appreciated.
> (I was thinking of running my code inside of a different interpreter but I
> have no idea on how to go at it)
>
>
> Example function: (it works fine in any other standard python (2.6)
> interpreter ).
>
>
>
> from multiprocessing import Pool
> from time import time
>
> ## Simple func to eat up cpu power.
> def whileFunc(z):
>     while z < 1000000:
>         z += 1
>     return z
>
> ## We have to work in __main__ else in some os versions the threads become
> unsafe
> if __name__ == "__main__":
>     ## Get current time
>     currtime = time()
>
>     ## How often to run (just a test value)
>     N = 1000
>     ## Just a list with 1s
>     myList = [1]*N
>
>     nrOfProcessors = 8 #16
>
>     ## Set our pool of processors
>     po = Pool(nrOfProcessors)
>
>     ## create the threads
>     res = po.map_async(whileFunc, myList)
>
>
>     print 'This value below should be a 1000:'
>
>     ## The "res.get()" getting of the result actually starts the threads
> (surprisingly enough.)
>     ## This is also where maya will open up the Output Window and in some
> cases lock up.
>     print len(res.get())
>
>     print 'time elapsed:', time() - currtime
>
> --
> You received this message because you are subscribed to the Google Groups
> "Python Programming for Autodesk Maya" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to python_inside_maya+unsubscr...@googlegroups.com.
> To post to this group, send email to python_inside_maya@googlegroups.com.
> For more options, visit https://groups.google.com/groups/opt_out.
>
>
>
>
>  --
> You received this message because you are subscribed to the Google Groups
> "Python Programming for Autodesk Maya" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to python_inside_maya+unsubscr...@googlegroups.com.
> To post to this group, send email to python_inside_maya@googlegroups.com.
> For more options, visit https://groups.google.com/groups/opt_out.
>
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"Python Programming for Autodesk Maya" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to python_inside_maya+unsubscr...@googlegroups.com.
To post to this group, send email to python_inside_maya@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to