問題タブ [pyroot]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - Pythonで変更可能な要素を持つProcessに辞書を渡す
multiprocessing ライブラリの Process モジュールを使用して、パフォーマンスを向上させるためにコードをスレッド化しようとしています。
コードの骨組みは、作業対象のスレッドごとに辞書を作成することです。すべての処理が完了すると、辞書が合計されてファイルに保存されます。リソースは次のように作成されます。
次に、プロセス内で、各スレッドが独自の histos[thread_number] オブジェクトを使用して、含まれている ROOT.TH1Fs を処理します。ただし、私の問題は、どうやら次のように Process でスレッドを開始した場合です。
スレッドは histos[i] オブジェクトにアクセスできますが、それらに書き込むことはできません。正確には、TH1F ヒストグラムで Fill() を呼び出すと、オブジェクトは共有変数ではないため、オブジェクトに書き込むことができないため、データは入力されません。
だからここ:https://docs.python.org/3/library/multiprocessing.html 代わりに multiprocessing.Array() を使用して、スレッドによる読み取りと書き込みの両方が可能な配列を作成する必要があることがわかりました。このような:
ただし、辞書を型として受け入れません。それは動作しません、それは TypeError: unhashable type: 'dict' と言います
では、この問題を解決するための最良のアプローチは何でしょうか? 私が必要とするのは、辞書に格納されているすべての「すべての種類のキー」のインスタンスを各スレッドに渡すことです。これにより、それらは独自に機能します。そして、これらの受信したリソースを書き込むことができなければなりません。
助けてくれてありがとう、そして些細なことを見落としていたらごめんなさい、私は以前にスレッド化されたコードをしましたが、まだpythonではしていません。
python - PyROOT で .root ファイルからデータをプロットする
私はPyROOTを使い始めているので、次の例をちりばめていました:
コードの最後で、データを py-fillrandom.root ファイルに保存します。それで、ルートファイルからデータをプロットしたかったのですが、ファイル内に複数のデータがあるため、私のアプローチは失敗しました(そして、私はどの解決策にもほど遠いと思うので、コードを投稿しませんでした)。このタスクに役立つチュートリアルや例は見つかりませんでした。だから私は助けをいただければ幸いです。
とにかく、.root ファイルの中身を確認する方法はありますか?
私はこれらすべてに慣れていないので、参考文献やヒントは私にとって非常に価値があります。
python - PyROOT で GEANT4 ライブラリを読み込めません
TTree を開いてそこからデータを読み取る PyROOT マクロを作成しようとしていますが、ツリーにはコラボレーションのフレームワークに固有のクラスがいくつか含まれています。
ツリーをロードし、次のようにデータを読み取ろうとします。
依存関係を手動で含めないと、次のエラーが表示されます。
TPVetoMCEvent
そのため、が定義されているクラスと、このクラスが依存するクラス ( )を含めましたMCVRootIO
が、最終的にエラーが発生します。
私はもう試した
ROOT.gInterpreter.ProcessLine('#include "/cvmfs/geant4.cern.ch/geant4/10.3.ref01/x86_64-slc6-gcc49-opt/include/Geant4/globals.hh"')
それでも同じエラーが発生します。
完全なコードは次のとおりです。