boost::python モジュールからプロセスを実行している間、コンソールを使い続けるにはどうすればよいですか? スレッドを使用する必要があると考えましたが、何かが足りないと思います。
import pk #my boost::python module from c++
import threading
t = threading.Thread(target=pk.showExample, args=())
t.start()
これにより、3D コンテンツをレンダリングする Window を実行する showExample が実行されます。このウィンドウが実行されている間、Python コンソールでコーディングを続けたいと思います。上記の例は、ウィンドウを表示するために機能しますが、コンソールをインタラクティブに保つことができません。それを行う方法はありますか?提案をありがとう。
こんにちはクリス
編集: showExample() C++ コードでスレッドを作成しようとしましたが、うまくいきませんでした。おそらくコンソールをスレッドにする必要がありますが、方法がわからず、役立つ例が見つかりません。
Edit2: 例をより単純にするために、これらの C++ メソッドを実装しました。
void Example::simpleWindow()
{
int running = GL_TRUE;
glfwInit();
glfwOpenWindow(800,600, 8,8,8,8,24,8, GLFW_WINDOW);
glewExperimental = GL_TRUE;
glewInit();
glEnable(GL_DEPTH_TEST);
glEnable(GL_CULL_FACE);
glCullFace(GL_BACK);
while(running)
{
glClearColor(0.0f, 0.0f, 0.0f, 0.0f);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT);
glfwSwapBuffers();
running = !glfwGetKey(GLFW_KEY_ESC) && gkfwGetWindowParam(GLFW_OPENED);
}
}
void Example::makeWindowThread()
{
boost::thread t(simpleWindow);
t.join();
}
役に立たないコード行があるかもしれません (実際に使用したいメソッドの一部をコピペしただけです)。どちらのメソッドも静的です。スレッドでインタラクティブ コンソールを起動し、python で pk.makeWindowThread() を起動すると、入力できなくなります。pk.makeWindowThread() の呼び出しを Python スレッドにも配置すると機能しません。(ウィンドウを表示しながらコンソールに何かを印刷しようとしています。