我试图一块C++代码包装成蟒LIB使用Boost.Python的,但是,我发现了多个实例不能在同一时间运行: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个线程应我的四核机器上同时运行:
[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
感谢您的帮助!
好,这当然看起来像一个合法的应用程序...;) – larsmoa
如果您指出哪些代码是python,哪些是C++,这将更容易阅读。我知道了,但是我花了一点时间。 –