コールバックはしたことないが、subprocessモジュール使ってcommunicate()が他言語プログラムとの通信で一番簡単だし使ってるな、
その時はstdout=PIPEとしておいて定期的に子の標準出力を読み出すスレッドがある方がいい
テキストに合わせてPython関数を呼ぶ疑似コールバック処理

リアルタイム性が必要ならあんまり使えないと思う