私はリストとしていくつかの値を維持し、ユーザが無期限にn秒ごとにリストに追加する必要があるpythonスクリプトを持っていますスクリプトを終了します。リストをファイルにバックアップして、リストの内容をメモリにロードせずに追加することができます。メモリに格納される唯一の部分は、追加される値になります。どのように大きく成長するPythonリストをファイルに裏打ちされ、任意の時点でメモリにロードされない
私はShelveを試しましたが、いくつかのテストを実行した後、ある時点で、既存の永続リストをメモリに読み込んで追加する必要があります。書き戻し= trueの場合、メモリに格納し、最後にファイルに書き込みます。
スクリプトはこのように書きます: -
d = shelve.open(reportDir+curDatName+ (processName.rsplit('.', 1)[0] if processName.endswith('.exe') else processName))
global counter
global startTime
d['CPU|'+pid] = []
d['RAM|'+pid] = []
d['THREADS|'+pid] = []
startTime = datetime.datetime.now()
while(not quit):
print('Took a snapshot')
counter = counter + 1
p = psutil.Process(int(pid))
list = d['CPU|'+pid]
print(list)
list.append(p.cpu_percent(0.1)/psutil.cpu_count(0.1))
d['CPU|'+pid] = list
print('CPU '+ str(p.cpu_percent(0.1)/psutil.cpu_count(0.1)))
list = d['RAM|'+pid]
list.append(p.memory_percent())
d['RAM|'+pid] = list
print('RAM '+ str(p.memory_percent()))
list = d['THREADS|'+pid]
list.append(p.num_threads())
d['THREADS|'+pid] = list
print('Threads- '+ str(p.num_threads()))
print(d['RAM|'+pid])
i=0
while(not quit and i < interval/chunkWait): #wait in chunks
i = i+1
time.sleep(chunkWait)
私のために所望の機能を達成することができ、他のパッケージがありますか?
データベースが必要です。 – BoarGules
@BoarGules要件に適合することがわかっている特定の種類のデータベースですか? –
[dbm](https://pymotw.com/3/dbm/)を見ましたか?カウンターをキーとして使用することができれば、それはあなたのために働くことができますか? – fralau