0

Pythonスクリプトの2つのプロセス間で情報を安全に(!)渡す方法を探しています。

1つのプロセスは読み取り専用で、もう1つのプロセスは書き込み専用です。渡す必要のあるデータは辞書です。

私がこれまでに見つけた最善の解決策はローカルSQLサーバーであり(データ自体は一種のテーブルであるため)、SQLiteがトランザクションを安全に処理すると思います。

より良い方法はありますか?ファイルが書き込まれている間、ファイルが読み取られないようにロックするモジュール、またはその逆のモジュールはありますか?

私はlinuxubuntu11.10を使用していますが、クロスプラットフォームソリューションを歓迎します。

4

2 に答える 2

3

プロセス間でデータを転送するには、パイプソケットを使用できます。Pythonは、ピクルスを使用してオブジェクトとバイトストリームを変換します。

データを安全に転送するには、データが1回だけ転送されることを確認する必要があります。つまり、送信者が何らかの形の領収書を必要としている間、宛先プロセスは「すべてを取得できなかったので、もう一度送信してください」と言うことができる必要があります。

これを実現するには、データに一意のキー(タイムスタンプまたはハッシュなど)を与える「ヘッダー」を追加する必要があります。受信者と送信者の両方が、データの2回の処理を回避するために、送信/確認したもののリストを保持できます。

于 2012-09-10T07:17:50.210 に答える
1

一方向の通信には、egmultiprocessing.Queueまたはを使用できますmultiprocessing.queues.SimpleQueue

共有メモリも。を使用するオプションmultiprocessing.Arrayです。ただし、辞書を少なくとも2つの配列(キーと値)に分割する必要があります。これは、すべての値が同じ基本タイプである場合にのみうまく機能します。

両方の良い点は、両方multiprocessing.Queueともmultiprocessing.Array内部でロックによって保護されているため、心配する必要がないことです。

于 2012-09-10T19:01:37.120 に答える