boost.python не поддерживает параллелизм?

Я пытаюсь обернуть кусок кода C ++ в python lib с помощью boost.python, однако я обнаружил, что несколько экземпляров не могут работать одновременно:

код (C ++):

class Foo{
public:
    Foo(){}
    void run(){
        int seconds = 2;
        clock_t endwait;
        endwait = clock () + seconds * CLOCKS_PER_SEC ;
        while (clock() < endwait) {}
    }   

};

BOOST_PYTHON_MODULE(run_test)
{
   using namespace boost::python;

   class_<Foo>("test", init<>())
      .def("run", &Foo::run)
      ;   

}

, который скомпилирован с использованием CMake (CMake):

add_library(run_test SHARED run_test.cpp)
target_link_libraries(run_test boost_python python2.7)

и протестирован с помощью следующего кода (Python):

class Dos(threading.Thread):
    def run(self):
        printl('performing DoS attack')

        proc = test()
        proc.run()

for i in range(5):
    t = Dos()
    t.start()

Вывод показывает, что код распараллеливается в очень странный способ. Каждый поток должен занимать всего 2 секунды, и 4 потока должны выполняться одновременно на моей машине quadcore:

[2011-11-04 13:57:01] performing DoS attack
 [2011-11-04 13:57:01] performing DoS attack
[2011-11-04 13:57:05] performing DoS attack
 [2011-11-04 13:57:05] performing DoS attack
[2011-11-04 13:57:09] performing DoS attack

спасибо за вашу помощь!

9
задан ildjarn 4 November 2011 в 17:04
поделиться