Pytocプログラムの配備(C++からPython結果値をロード)


紹介と概要


🔥概要


本プロジェクトは、C++でPythonスクリプトコードを実行し、コンソール出力または文字列データとしてロードするプログラムです.

🔥開発要因


最近,Pythonのテンソルストリーム,matplot,pyttorch,scikitなどのライブラリを用いて機械を学習している.
しかし、私の主な言語はc++なので、Pythonから結果値をより柔軟にロードするために個人的な理由としています.

🔥開発環境


2021~10-05 Windows 11ファミリー版、コンパイラはMSCCを使用しています.
C++バージョンは20を使用しています.
pythonバージョンでは3.8.8を使用します.

✨Pytoc


🔥説明(重要)


Pythonのサンプルコード(softmax regression,print)も機能領域に一緒に置かれており、デフォルトではTensorflow、Matplotlibライブラリは敷く必要があります.
最初にバージョンが作成されませんでした.
もちろん、クイックバージョンを作ってみましたが...
高速バージョンを作成する場合は、アプリケーションに配備するのではなく、ライブラリに配備する必要があります.
まず、このプロジェクトをアプリケーションに配備します.
オープンソースなので、ユーザーは単独で触れることができますが、最も重要なのは、オブジェクト化を自然にし、いくつかの機能に触れるだけで簡単に修正することができます.
たとえば...
typedef struct __MAWILE_PIPE_INFO {
	std::vector<std::string> outText; // 파이썬의 실행결과가 저장될 문자열벡터
	HANDLE WriteOutHandle; // 파이썬의 실행결과에 대하여 전달될 핸들 (없으면 콘솔핸들로 전달됨.)
	bool 	isUseInput, // 파이썬코드에 입력값이 있냐? 물어보는요소
   		isUseWriteOutHandle, // 파이썬의 실행결과에 대하여 전달될 핸들을 따로 사용할거냐? 물어보는요소 (false면 콘솔핸들로 전달됨.)
         	isReportResultString; // 파이썬의 실행결과를 outText에 저장할거냐? 물어보는 요소
	char* inputBuf; // 파이썬코드의 문자열 입력값을 가리키는 포인터

	void clear(); // 구조체 초기화함수

} PER_PIPEINFO, *LPPER_PIPEINFO;
上の構造体はわざわざユーザーが修正しやすい構造体を作りました.
上の注釈は面倒なので、符号化には書いていません.(ということは、ここでしかわからない情報!!!
修正を提出する必要がありますが、面倒です...(聴覚障害者発動~~~!!@)
いくつかのデザインをしたいと思っていましたが、面倒で、あまり大きくしていません...;

🔥n/a原理


サブプロセスの作成->I/Oパイプラインの接続->
文字列ベクトルを読み込み、挿入します->終了します.
番組自体は簡単なので、特に大きなところはありません.

🔥テスト写真


テスト写真(Github)

🔥リファレンス



🔥ダウンロード


ダウンロード(Github)

終わったら...


眠い…