Linux上で、C++プロセスからPythonプロセス(およびPythonからC++への小さなサイズのフロートデータ)に大きなデータ(RGBイメージデータ:320 * 240 * 3)を送信するのに十分な高速(約40〜50Hz)は何ですか?注:2つのプロセスは同じPCで実行されています。LARGEデータをC++からPythonにLinux上で高速に送る方法は?
私が試みた:
- UDP
- 共有メモリ
をUDPの場合:
送信されるメッセージは、そうUDPメッセージ制約(65535)よりも大きいです直接sendto()
を使用するとエラーが発生します:メッセージが長すぎます。そして、私はそれが速い方法であるかどうかも疑います(約40〜50Hzは大丈夫です)。共有メモリについては
:
共有メモリはC++からのC++に画像を送信するための高速な方法のようです。しかし、Pythonにはポインタがないので、共有メモリにデータを読み書きする方法はありません。
上記のIPCを行うには速い方法がありますか?あるいは、良い方法は、符号なしの文字とfloatの値をPythonの共有メモリに書き込むことができますか?
すべてのデータを一度に送信するわけではありません。あなたはそれをチャンクで送る。送信するデータが5 GBあるとします。とにかく、5 GBのデータを一度に送るわけではありません。また、あなたのデータが重要で、あなたがそれを失うことができない場合は、UDPの代わりにTCPを使います。 – Bauss
Hertzはスループットの単位ではありません。 IPCで320 * 240 * 3オクテットのデータを50回/秒(10.98 MiBps程度)送りたいのですか? –
@MichaelFoukarakisはい、私は無署名のchar型320 * 240 * 3のデータを毎秒約40〜50回送信します。 –