
OK, I guess I've just discovered the answer to my own question. [Don't you just hate that! :-) ] My C++ extensions that perform the real calculations needed to be modified to support multiple threads. By adding the Py_BEGIN_ALLOW_THREADS/Py_END_ALLOW_THREADS macros, the Python interpreter knew it was safe to allow other threads to execute during computations, just like it allows other threads to execute during I/O. To accomodate the Python global thread lock, I needed to change my code as follows: my_func() { /* python calls */ Py_BEGIN_ALLOW_THREADS /* computations that don't use python API */ Py_END_ALLOW_THREADS /* python API calls */ } Now, I can see both processors being used. -- Joe VanAndel National Center for Atmospheric Research http://www.atd.ucar.edu/~vanandel/ Internet: vanandel@ucar.edu