Pandasの代わりになるもの
こんにちは、貴重なお時間ありがとうございます。
質問ですが、
C#でPythonのexeファイルを実装したのですが
Pythonの処理に時間がかかっているようで
その原因がexeファイル起動時にpandasなどのライブラリーの読み込みに時間がかかっているからのようです。
対策として下記の事を考え、可能かどうかご存じの方が居ればご助言頂ければ幸いです。
・pandasの中には沢山の関数があると思いますが、実際に使用するdfのみをインストールする事は可能か?(不要な関数を無くせば軽くなるのでは..)
・現状ではC#でプロセススタートでPythonに引数を渡してexeファイルを起動するようにプログラムを書いているのですが
Pythonプログラムを常駐させ、任意のタイミングでC#からPythonに引数を渡す事は可能か?
上記2点について、有識者の方
どうかお力をお貸しください。
その他別の解決手段等あればご助言下さい。
#C#
#Python
#コールバック
#processstart
判る範囲でのみ回答します。
・現状ではC#でプロセススタートでPythonに引数を渡してexeファイルを起動するようにプログラムを書いているのですが
Pythonプログラムを常駐させ、任意のタイミングでC#からPythonに引数を渡す事は可能か?
引数でデータを渡せるのは起動時だけなので、リアルタイムでデータを受け渡しするなら、標準入出力のリダイレクトや、名前付きパイプ等を使うのが良いかと思います。
プロセス間通信やTCPなどのソケット通信を使うことで通信自体はできるけど作るのめんどくさいと思う。今ならWebSocketライブラリがC#にもpythonにもライブラリあるので多少楽はできるとは思うが、本当にPythonライブラリのロードが問題なんだろうかという疑問のほうがある。そう結論付けたパフォーマンスプロファイラーの結果とかを提示してくれると具体的なことが言えるかもしれない。
てまえみそですが、pythonnetというライブラリについての記事を書いてますのでご参考にどうぞ。
それ以外だと、python側をサーバとして設計し、C#側からサーバに対して要求を投げる
のが有望手だと思います。
自前で通信を1から書くのは相当しんどいですが、gRPCなどのライブラリに頼ればそこそこ楽になります。