私のpythonのデバッグのスキルはちょっと錆びています(そして、ちょっと私は2009年にhttps://pypi.python.org/pypi/orbitedのOrbited(ウェブソケットの先駆け)上でobjgraphを使用したことを意味します)。 :
、スケジューラ内のオブジェクトを数える前とobjgraph.show_most_common_types()
| What | Before | After | Diff |
|-------------+------------------+--------|---------+
| function | 33318 | 33399 | 81 |
| dict | 17988 | 18277 | 289 |
| tuple | 16439 | 28062 | 11623 |
| list | 10926 | 11257 | 331 |
| OrderedDict | N/A | 7168 | 7168|
を使用した後はいかなる場合でもRAMの膨大な数ではないが、より深い私はトンのscheduler._transition_counterは11453とscheduler.transition_logであることがわかった掘りで満たされています:
もちろん私の部分の最初のエラーが移行ログの長さを設定していなかった実現するために私を導いた私の部分に
('x-25ca747a80f8057c081bf1bca6ddd481', 'released', 'waiting',
OrderedDict([('x-25ca747a80f8057c081bf1bca6ddd481', 'processing')]), 4121),
('x-25ca747a80f8057c081bf1bca6ddd481', 'waiting', 'processing', {}, 4122),
('x-25cb592650bd793a4123f2df39a54e29', 'memory', 'released', OrderedDict(), 4123),
('x-25cb592650bd793a4123f2df39a54e29', 'released', 'forgotten', {}, 4124),
('x-25ca747a80f8057c081bf1bca6ddd481', 'processing', 'memory', OrderedDict(), 4125),
('x-b6621de1a823857d2f206fbe8afbeb46', 'released', 'waiting', OrderedDict([('x-b6621de1a823857d2f206fbe8afbeb46', 'processing')]), 4126)
まずエラー
。
設定transition-log-length
10に設定した後:
簡単にGoogleが
_lru_list_elem
が順番にで
key_splitに呼び出され
@functools.lru_cache
によって行われることがわかっ
| What | Before | After | Diff |
| ---------------+----------+--------+---------|
| function | 33323 | 33336 | 13 |
| dict | 17987 | 18120 | 133 |
| tuple | 16530 | 16342 | -188 |
| list | 10928 | 11136 | 208 |
| _lru_list_elem | N/A | 5609 | 5609 |
(distributed/utils.py
で)LRUキャッシュである
、最大100 000項目の
第二にしようと、その後、再び私のスクリプトを実行していると私は100K _lru_list_elemに近づくまで、それは非常に高速登りメモリを見た後およそ10K _lru_list_elem
に登る必要がありますDASKとして表示されたコードに基づいて
それはほぼ完全に登るのを止める。
これは、ケースのように表示されますので、かなりフラットライン100K
ので
ノーリークした後、しかし楽しいDASKのソースコードやPythonのメモリプロファイラで汚れた手を取得する