red-data-tools/pycall.rb

Calling Python functions from the Ruby language

解決する課題

PyCallを使用すると、Ruby開発者はRubyアプリケーション内で直接Pythonコードを呼び出し、Pythonライブラリを利用できます。Pythonモジュールのインポートや関数の実行を、まるでネイティブなRubyコードであるかのように扱うことで、両言語間のギャップを埋めます。

仕組み

このライブラリはPythonのオブジェクトや関数をラップし、数値、文字列、配列、ハッシュといった一般的なデータ型に対して自動的な型変換を提供します。Pythonの構文をRubyに適した形式にマッピングします。例えば、Pythonの classname(x) はRubyでは classname.new(x) となり、キーワード引数はRubyのコロン構文(例: x: 1)を使用して処理されます。また、長時間実行されるPythonタスクを実行する際に、RubyのグローバルVMロック (GVL) を管理するためのツールも提供しています。

対象ユーザー

このツールは、Ruby環境を離れることなく、データサイエンスや科学計算ツールといったPythonの豊富なライブラリエコシステムを活用したいRuby開発者を対象としています。

ハイライト

  • RubyオブジェクトとPythonオブジェクト間の自動型変換。
  • Pythonのコンストラクタ、呼び出し可能オブジェクト、キーワード引数をRuby構文へシームレスにマッピング。
  • 長時間実行されるPython関数呼び出し中にRuby GVLを解放し、パフォーマンスを向上させるサポート。
  • Ruby 2.4+ および Python 3.7+ との互換性。
  • Python共有ライブラリが自動検出されない場合に場所を特定するためのデバッグツールを同梱。

関連

  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト