Pamięć na serwerze mojego laboratorium (Ubuntu) stale się wypełnia, ponieważ użytkownicy nigdy nie wyłączają starych notebooków. Chciałbym lepiej zrozumieć, ile pamięci zajmuje każdy notebook. Mogę podsumować (zgrubne) użycie pamięci dla wszystkich notebooków jupyter uruchamianych przez każdego użytkownika, ale chciałbym uzyskać całkowite wykorzystanie pamięci każdego pojedynczego notebooka, aby móc zamknąć te szczególne świnki pamięci (lub powiedzieć innym użytkownikom, aby zamknęli jego/ona jest na dole). Szybko ułożyłem poniższy kod, aby uzyskać około. mem. użycie na jądro Jupytera, ale nie wiem jak powiązać identyfikatory jądra z konkretnym notatnikiem.Notebook Jupyter: zużycie pamięci dla każdego notebooka
import os
import pwd
import pandas as pd
UID = 1
EUID = 2
pids = [pid for pid in os.listdir('/proc') if pid.isdigit()]
df = []
for pid in pids:
try:
ret = open(os.path.join('/proc', pid, 'cmdline'), 'rb').read()
except IOError: # proc has already terminated
continue
# jupyter notebook processes
if len(ret) > 0 and 'share/jupyter/runtime' in ret:
process = psutil.Process(int(pid))
mem = process.memory_info()[0]
# user name for pid
for ln in open('/proc/%d/status' % int(pid)):
if ln.startswith('Uid:'):
uid = int(ln.split()[UID])
uname = pwd.getpwuid(uid).pw_name
# user, pid, memory, proc_desc
df.append([uname, pid, mem, ret])
df = pd.DataFrame(df)
df.columns = ['user', 'pid', 'memory', 'proc_desc']
df
nie mogę uruchomić tego powodu .. znalezionego przy błędach 'PackageNotFoundError bez modułu: Pakiety brakuje w obecnych kanałów: - pwd' . każde inne rozwiązanie, które nie wymaga 'pwd'. Jestem na serwerze Windows z pytaniem anakonda 2.7. – ihightower