Tôi cố gắng để quấn một mảnh C++ mã vào python lib sử dụng Boost.Python, tuy nhiên, tôi phát hiện ra rằng nhiều trường hợp không thể chạy cùng một lúc:boost.python không hỗ trợ tính song song?
mã (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)
;
}
đó là biên dịch sử dụng CMake (CMake):
add_library(run_test SHARED run_test.cpp)
target_link_libraries(run_test boost_python python2.7)
và thử nghiệm với đoạn mã sau (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()
Đầu ra cho biết mã được song song theo một cách rất kỳ lạ. Mỗi chuỗi chỉ mất 2 giây và 4 chuỗi nên chạy đồng thời trên máy lõi tứ của tôi:
[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
cảm ơn sự giúp đỡ của bạn!
Vâng , điều này chắc chắn trông giống như một ứng dụng hợp pháp ...;) – larsmoa
Điều này sẽ dễ dàng hơn để đọc nếu bạn chỉ ra mã nào là python và đó là C++. Tôi đã tìm ra, nhưng phải mất một chút thời gian. –