3

私の厄介な解決策:

私は初心者のPythonプログラマーであり、高度な知識が不足しているため、基本的なツールを使用して高度なプロジェクトを完了することがよくあります。現在、実行時にプログラム間でデータを交換しようとしています。テキストファイルの書き込みと読み取りを試しました。2つのプログラムが同時にファイルに書き込むことを避けるために、各プログラムには個別の書き込み専用テキストファイルがあります。

すべてのデータを1つのファイルに収集するために、書き込み専用のテキストファイルを読み取り、すべてのデータを1つのファイルに統合する別のプログラムを作成しました。その後、すべてのプログラムは、この1つのファイル内の他のすべてのプログラムの変数にアクセスできます。

より簡単な解決策を求める私の要求:

上記の解決策はうまく機能しますが、Pythonプログラム間で変数を共有するためのより洗練された方法を見つけようとしています。Pythonでこれを行うためのより良い方法があるかどうか教えていただけますか?

どうもありがとう。

4

2 に答える 2

4

Memcachedは、変数がメモリと同じくらい揮発性であるため、多かれ少なかれあなたが説明するように設計されています。

Redisは、memcachedといくつかの類似点がある、もう1つの優れたオプションですが、データを永続化するオプションです。

私が考えることができる他のすべての直接共有オプションは、現在行っているフラットファイルの使用を除いて、データベースのカテゴリに直接分類されます(SQLかどうかは関係ありません)。

最後に、プログラムをリファクタリングして、値を直接共有する代わりに、必要なときに情報を交換できるように相互にサービスを提供することができます。これにより、場合によってはオーバーヘッドと複雑さが増す可能性がありますが、変数値が変更された場合にそのキャッシュを検証する必要がなくなります。

于 2012-08-02T12:28:00.783 に答える
2

ソケットを使用して、プログラム間で通信できます。ただし、共有しているデータが常にすべてのプログラムに関連している場合は、他の人が示唆しているように、中央データベースの方が適しています。

または、すべてのプログラムがPythonで記述されている場合は、同じインタープリターから異なるスレッドですべてのプログラムを起動できます。スレッドは同じメモリスペースを共有するため、スレッド間で変数を共有することはすでに組み込まれています(スレッドセーフな方法でスレッドを読み取り/書き込みするようにしてください)。

于 2012-08-02T13:28:10.427 に答える