Próbuję owinąć kawałek kodu C++ do pytona lib przy użyciu boost.python, jednak okazało się, że wiele wystąpień nie może działać w tym samym czasie:boost.python nie wspiera równoległości?
kodu (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)
;
}
który jest opracować używając cUpewnij (cUpewnij)
add_library(run_test SHARED run_test.cpp)
target_link_libraries(run_test boost_python python2.7)
i zbadano za pomocą następującego kodu (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()
Dane wyjściowe wskazują, że kod jest zrównoleglony w bardzo dziwny sposób. Każdy wątek powinien podjąć tylko 2 sekundy i 4 wątki powinny działać jednocześnie na moim komputerze 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
dziękuję za pomoc!
Dobrze , to na pewno wygląda jak legalna aplikacja ...;) – larsmoa
Byłoby łatwiej przeczytać, jeśli wskazałeś, który kod był python i który był w C++. Rozgryzłem to, ale zajęło mi to chwilę. –