Multiprocessing/Multithreading Support in Motionbuilder

Multiprocessing/Multithreading Support in Motionbuilder

Anonymous
Not applicable
926 Views
1 Reply
Message 1 of 2

Multiprocessing/Multithreading Support in Motionbuilder

Anonymous
Not applicable

I tried to test a "Hello world" Multiprocessing/Multithreading script in Motionbuilder

 

I got errors

and new Motionbuilder Window has been opened

 

Traceback (most recent call last):
  File "C:/Users/Wahb/SkyDrive/Documents/x.py", line 23, in <module>
    p.start()
  File "C:\Program Files\Autodesk\MotionBuilder 2015\bin\x64\python27.zip\multiprocessing\process.py", line 130, in start
  File "C:\Program Files\Autodesk\MotionBuilder 2015\bin\x64\python27.zip\multiprocessing\forking.py", line 271, in __init__
  File "C:\Program Files\Autodesk\MotionBuilder 2015\bin\x64\python27.zip\multiprocessing\forking.py", line 193, in dump
  File "C:\Program Files\Autodesk\MotionBuilder 2015\bin\x64\python27.zip\pickle.py", line 224, in dump
  File "C:\Program Files\Autodesk\MotionBuilder 2015\bin\x64\python27.zip\pickle.py", line 331, in save
  File "C:\Program Files\Autodesk\MotionBuilder 2015\bin\x64\python27.zip\pickle.py", line 419, in save_reduce
  File "C:\Program Files\Autodesk\MotionBuilder 2015\bin\x64\python27.zip\pickle.py", line 286, in save
  File "C:\Program Files\Autodesk\MotionBuilder 2015\bin\x64\python27.zip\pickle.py", line 649, in save_dict
  File "C:\Program Files\Autodesk\MotionBuilder 2015\bin\x64\python27.zip\pickle.py", line 681, in _batch_setitems
  File "C:\Program Files\Autodesk\MotionBuilder 2015\bin\x64\python27.zip\pickle.py", line 286, in save
  File "C:\Program Files\Autodesk\MotionBuilder 2015\bin\x64\python27.zip\pickle.py", line 748, in save_global
pickle.PicklingError: Can't pickle <function rand_string at 0x000000001AF787B8>: it's not found as __main__.rand_string
>>> 

 

this is the code that i was trying to execute

 

import multiprocessing as mp
import random
import string

# Define an output queue
output = mp.Queue()

# define a example function
def rand_string(length, output):
    """ Generates a random string of numbers, lower- and uppercase chars. """
    rand_str = ''.join(random.choice(
                    string.ascii_lowercase
                    + string.ascii_uppercase
                    + string.digits)
               for i in range(length))
    output.put(rand_str)

# Setup a list of processes that we want to run
processes = [mp.Process(target=rand_string, args=(5, output)) for x in range(4)]

# Run processes
for p in processes:
    p.start()

# Exit the completed processes
for p in processes:
    p.join()

# Get process results from the output queue
results = [output.get() for p in processes]

print(results)

 

i tried simpler code with "print "Hello"" and i got the same error

0 Likes
927 Views
1 Reply
Reply (1)
Message 2 of 2

robotProdigy
Advocate
Advocate

Last I heard, Multithreading is disabled in Motionbuilder Python.

0 Likes