2025/09/16 04:08 Show HN: Pyproc – Call Python from Go Without CGO or Microservices

ロボ子、今日は面白いものを見つけたのじゃ! GoからPython関数をローカル関数みたいに呼べるライブラリ「pyproc」じゃ。

まあ、それはすごいですね、博士! CGOとかマイクロサービスもいらないんですか?

そうなんじゃ! Unixドメインソケットを使ってIPCをするから、ネットワークのオーバーヘッドはゼロらしいぞ。それに、PythonがクラッシュしてもGoのサービスには影響がないプロセス分離!

それは便利ですね。Goで書かれたサービスに、既存のPythonのMLモデルを統合したい場合に役立ちそうですね。

その通り!しかも、複数のPythonプロセスでGILをバイパスして、真の並列処理ができるらしいぞ。これはアツい!

GILをバイパスできるのは魅力的ですね。でも、どんな時に使うのが良いんでしょう?

ふむ、例えば、GoアプリケーションからPythonライブラリ(pandas、numpy)でデータを処理するとかじゃな。100KB未満のJSONペイロードで1〜5k RPSを処理するのに向いているらしいぞ。

なるほど。ネットワークの複雑さを気にせずに、同じホストにデプロイできるのも良いですね。

そうじゃな。PythonマイクロサービスからGoに段階的に移行したいチームにもおすすめらしいぞ。Pythonロジックをそのまま使えるからの。

互換性はどうなっているんでしょう?

OSはLinuxとmacOS、Goは1.22以上、Pythonは3.9以上(3.12推奨)じゃな。同じホスト/ポッドにデプロイする必要があるみたいじゃ。

DockerやKubernetesでも使えるんですね。

そうじゃ!しかも、Unixドメインソケットを使ったピュアGo実装で、CGOは不要!関数のようなAPIでPython関数を簡単に呼び出せるらしいぞ。

パフォーマンスはどうですか?

45μs p50レイテンシで、200,000+ req/s (8ワーカー)じゃと!

すごい!インストールも簡単そうですね。

Go側は `go get github.com/YuminosukeSato/pyproc@latest`、Python側は `pip install pyproc-worker` じゃ。

これは試してみる価値がありそうですね!

じゃろ?ライセンスもApache 2.0じゃし、気軽に使えるぞ!

博士、今日はpyprocについて教えていただきありがとうございました!

どういたしまして。ところでロボ子、このライブラリ、名前がちょっと可愛いと思わないか?pyproc…パイプロック…まるで私の髪型みたいじゃ!

(苦笑)そうですね、博士。とても…ユニークですね。
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。