問題タブ [parallel-python]
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 - プロセッサコアまたはワーカーIDの並列pythonの識別
プロセスを並行して実行していますが、書き込み先の CPU プロセスごとにデータベースを作成する必要があります。各サーバーに割り当てられたCPUと同じ数のデータベースのみが必要なので、後でマージできる3つのデータベースに100のジョブが書き込まれます。
各ワーカーを識別できるワーカー ID 番号またはコア ID はありますか?
python - スレッド間でクラス インスタンスを共有する Python
アプリケーションに必要なすべてのリソース (主に画像) をメモリにロードするクラスがあります。
次に、複数のスレッドがこのクラスを介してこれらのリソースにアクセスする必要があります。すべてのインスタンスがすべてのリソースをリロードするのは望ましくないため、Singleton パターンを使用することにしました。私はこのようにしました:
複数のスレッドを使用していない限り、これは正常に機能します。ただし、複数のスレッドを使用すると、すべてのスレッドが異なるインスタンスを持ちます。したがって、4 つのスレッドを使用して、それぞれが新しいインスタンスを作成します。すべてのスレッドがこのクラスの同じインスタンスを使用するようにしたいので、リソースは一度だけメモリにロードされます。
また、クラスが定義されているのと同じモジュールでこれを実行しようとしましたが、クラス定義の外側にありました。
ただし、すべてのスレッドには独自のインスタンスがあります。
私はPythonを初めて使用します。これが間違ったアプローチである場合は、教えてください。助けていただければ幸いです
python-2.7 - 並列pythonで「マルチアレイのインポート」エラーを解決するにはどうすればよいですか?
Ubuntu Voyager (Ubuntu 12.04 派生) システムで、並列 python (バージョン 1.6.1) を使用して numpy 配列 (numpy バージョン 1.6.1) を使用する関数を実行する python 2.7 スクリプトを実行しようとしています。次のエラーメッセージが表示されます(実際には、まだ長く、12回繰り返されていると思います):
他のスレッド (例: Parallel Python での NumPy のインポート) から、おそらく pp と numpy の通信に問題があることがわかったので、これらを試しました:
- pp と numpy の更新
- numpy の再インストール (私は anaconda パッケージを使用しています)
- (スパイダーからではなく)シェルから直接コードを実行する
- マルチアレイ(それ以外の場合は正常にインポートされます)をジョブでワーカーに直接送信します(そして、私は正しい構文を持っていると確信しています...)
しかし、役に立たない。他に提案はありますか?ええと、私の関数を「非数値化」する以外の簡単な回避策はありますか(悲しいことに、それは行列の乗算です)?同じオペレーティング システムのより新しいバージョンを使用しているが、それ以外は同じ Python セットアップを使用している私の同僚は、この問題を抱えていないようですが、時間が問題なので、システムを更新したり、遅いコンピューターをハイジャックしたりすることは、どちらも最善の選択肢ではありません。
必要に応じて、詳細についてお気軽にお問い合わせください。よろしくお願いいたします。
python - Parallel Python:別のモジュールで記述された関数を「送信」に渡す
Parallel Python モジュール ( pp
) を使用しており、ワーカーにジョブを送信したいと考えています。しかし、実行したい関数は別のモジュール (Cython で作成) にあり、関数名を新しいワーカーにインポートする方法がわかりません。ここで提案されている方法、つまり関数内にモジュール「walkerc」をインポートすることはできません。これは、walk 自体が walkerc でファイル名「walkerc.so」から定義されているためです。
上記のステートメントは両方とも失敗し、次のエラーが発生します。
トレースバック (最新の呼び出しが最後):
ファイル ""、1 行目、ser.submit(walk, (1000, params)、modules = ("walkerc",)、globals = globals()) 内
ファイル "/usr/lib/python2.7/site-packages/pp.py"、458 行目、送信 sfunc = self.__dumpsfunc((func, ) + depfuncs, modules)
ファイル "/usr/lib/python2.7/site-packages/pp.py"、629 行目、__dumpsfunc のソース = [self.__get_source(func) for func in func]
ファイル "/usr/lib/python2.7/site-packages/pp.py"、696 行目、__get_source sourcelines = inspect.getsourcelines(func)[0] 内
ファイル "/usr/lib/python2.7/inspect.py"、690 行目、getsourcelines 行、lnum = findsource(object)
ファイル「/usr/lib/python2.7/inspect.py」、526行目、findsource file = getfile(object)
ファイル "/usr/lib/python2.7/inspect.py"、420 行目、getfile の '関数、トレースバック、フレーム、またはコード オブジェクト'.format(object))
TypeError: '<'組み込み関数 walk'>' は、モジュール、クラス、メソッド、関数、トレースバック、フレーム、またはコード オブジェクトではありません
関数 'walk' 自体はメイン プログラム内で適切にインポートされますが、問題があるのはそれを新しいワーカーに送信するプロセスです。
関数名「walk」を正しく指定するにはどうすればよいですか? Cython で変更してパフォーマンスを向上させたいので、呼び出したのと同じファイルで 'walk' を定義したくありません。代替手段はありますか?