私は、RAMに変数を格納し、次にそれらの変数をいくつかの異なるプロセスから読み込んで更新する必要のあるマルチプロセスのPythonアプリケーション(プロセスはuwsgiによって生成されています)を持っています。利用可能なキャッシュオプションがたくさんあることはわかっていますが、見つかったものはすべて文字列を保存できるだけです。異なるPythonプロセスが同じ仮想メモリにアクセスし、それを変換したりコピーしたりせずにデータを共有することは可能ですか?Pythonプロセスはライブオブジェクトを共有できますか?
答えて
POSH, Python Shared Objects,あなたがやりたいこと(SvsV-IPC共有メモリにPythonオブジェクトを置き、複数のプロセスからそれらを変更する)の少なくとも一部を実行し、独自の拡張モジュールを開発する際の出発点あなたがwsgi-spawnedサーバープロセスで必要とすることは、プロセス間でオブジェクトを共有するときにpickling/unpicklingオブジェクトに依存しないPythonの世界にはそれほど多くありません。
もう一つのことは、プロセス間の任意のネットワーク接続を介して共有するPyroです(つまり、Unix-Domainソケットを介して共有することもできます)。自分自身の経験では、 multiprocessingは、(プロキシ)オブジェクト管理を提供できます。
また、WSGIアプリケーションがプロセスをフォークしないようにするWebサーバーを取得できるかどうか、スレッド化を使用するかどうかを見てみましょう。この方法では、共用オブジェクトキャッシュ用に標準のPythonグローバルデータを使用するだけで済み、生成されたすべてのWSGIハンドラスレッドからアクセスできます。スレッド化されたWSGIサーバーは、例えば、CherryPy組み込みのwsgiserverです。これは、あなたが必要とする正確な要求を持つプロジェクトに使用しています。 mod_wsgiは、ワーカーMPMを使用してApacheを構成する場合(Apacheスレッドであり、新しいプロセスをフォークしないように)、状況に応じて動作します。
これらのすべてがオプションではない場合は、Webサーバーで実際に行っている実際の処理を外部プロセスに抽出し、WebページとRPCメカニズムを使用して通信して作業要求をプッシュしデータ? "バックエンド"処理サーバーは、標準ライブラリSimpleXMLRPCServerまたは類似のものを介してXML-RPCインターフェイスを提供する単純なマルチスレッドPythonプロセスにすることができます。
私のコンピュータが修復されているのでこれをテストすることはできませんが、私が探している答えはスレッディングだと思います。以前はわかりませんでした。サーバーはuWSGIです。これは、フォークの代わりにスレッドを使用できると確信しています。パフォーマンスにどのような影響を与えるのか分かりませんが、それは別の質問です。 –
- 1. Pythonプロセス間の共有メモリ
- 2. 自己オブジェクトはPythonのマルチプロセッシングで共有されますか?プロセス?
- 3. Python - プロセス間でナンシーな配列を共有しますか?
- 4. DLL内のシングルトンクラスをプロセス間で共有できますか?
- 5. どのWin32ユーザーモードハンドルをプロセス間で共有できますか?
- 6. 別のPythonプロセス間でデータを共有するPythonマルチプロセッシング
- 7. 親プロセスと子プロセスがIPC共有メモリを共有する
- 8. 共有プロセス/スレッド
- 9. 共有要求.Pythonのプロセス間のセッション
- 10. キューオブジェクトは、Pythonマルチプロセッシングモジュールのプロセス間で自動的に共有されますか?
- 11. Java System Classはプロセス間で共有されますか?
- 12. Pythonで異なるプロセス間でリストを共有
- 13. テンソルフローモデルをプロセス間で共有する
- 14. プロセス間で変数を共有する
- 15. rubyプロセスで変数を共有する
- 16. Javaプロセス間でオブジェクトを共有する
- 17. プロセス間で変数を共有する -
- 18. プロセス間の大きなバイナリデータ共有
- 19. プロセス間共有共有mutexを増やし、共有ミューテックスのプロセス間条件変数をブーストする
- 20. GitHub共有プロセスを終了できません
- 21. プロセス間でオブジェクトの状態を共有しますか?
- 22. プロセス間でスレッドを共有していますか?
- 23. Pythonは親プロセスと子プロセスの間でEvent()変数を使用してdictを共有しています
- 24. C++プロセスとJavaプロセス間の共有メモリ
- 25. プロセス間の共有データキュー
- 26. プロセス間のNodeJs共有オブジェクト
- 27. ゴーラン、プロセスと共有メモリ
- 28. boost ::プロセス間共有メモリ
- 29. 共有ホスティングでゾンビPHPプロセスを扱う
- 30. gunicornプロセスでnumpyアレイを共有
[System V共有メモリのPythonでの可能な複製?](http://stackoverflow.com/questions/2219604/system-v-shared-memory-in-python) – Amber
[処理](http: //pypi.python.org/pypi/processing)パッケージに含まれています。 – Keith
私はすでにそれらの両方をチェックアウトしました。 sysv_ipcは文字列を格納するだけで、 'process'はプロセスがspwではなくuwsgiによって生成されるため動作しません。 –