Falconの思うままに

PASCAL好きが、気ままにマニアックなネタを

P4Dのスレッド化

さて、P4Dを昔取り上げたかと思います。

Python for Delphi ですね。

DelphiからPythonをコールできて戻り値も取れます。

 

これ大変便利なものですね。

PythonGUIを作るのは骨が折れますが、Delphiで作ると

あっという間です。

 

なのでボタンを置いてPythonをCallするという使い方は

非常に有望です。

 

ですが、メインスレッドで動くみたいで、重い処理でブロックしてしまいます。

 

なので、TPythonEngineコンポをThreadで動かさないといけないことに

なります。メインスレッドがブロックしてもいいならそのまま使いますが

時計表示がとまったりタイマーが動かないなど弊害のほうが大きいかな。

 

 

単純にこのコンポをメインスレッドで生成してスレッド内で参照で

動かそうとしたら、うまく動かないです。

困ったのですが、結果はスレッド内でTPythonEngineを動的に

生成して、DLLのロード、アンロードをコードでやってあげたら

動くようになりました。

お困りの人は参考にしてください。

 

うまくやるとDelphiアプリを動かしたままで、

スクリプトの動的ローディングにしてやると

ホットリロードみたいに使えそうです。

便利ですねえ。

 

ではでは。