相关疑难解决方法(0)

boost.python不支持并行性?

我试图使用boost.python将一段C++代码包装到python lib中,但是,我发现多个实例不能同时运行:

代码(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)
      ;   

}
Run Code Online (Sandbox Code Playgroud)

这是使用CMake(CMake)编译的:

add_library(run_test SHARED run_test.cpp)
target_link_libraries(run_test boost_python python2.7)
Run Code Online (Sandbox Code Playgroud)

并使用以下代码(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()
Run Code Online (Sandbox Code Playgroud)

输出表明代码以非常奇怪的方式并行化.每个线程应该只需要2秒钟,并且我的四核机器上应该同时运行4个线程:

[2011-11-04 13:57:01] performing DoS attack
 [2011-11-04 13:57:01] performing DoS attack …
Run Code Online (Sandbox Code Playgroud)

c++ parallel-processing boost boost-python

9
推荐指数
1
解决办法
3609
查看次数

标签 统计

boost ×1

boost-python ×1

c++ ×1

parallel-processing ×1