annotate deep/stacked_dae/utils.py @ 191:3632e6258642

Ajouts mineurs à stacked_dae, juste printé l'heure je crois.
author fsavard
date Tue, 02 Mar 2010 14:47:18 -0500
parents 1f5937e9e530
children e656edaedb48
rev   line source
131
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
1 #!/usr/bin/python
191
3632e6258642 Ajouts mineurs à stacked_dae, juste printé l'heure je crois.
fsavard
parents: 167
diff changeset
2 # coding: utf-8
3632e6258642 Ajouts mineurs à stacked_dae, juste printé l'heure je crois.
fsavard
parents: 167
diff changeset
3
3632e6258642 Ajouts mineurs à stacked_dae, juste printé l'heure je crois.
fsavard
parents: 167
diff changeset
4 from __future__ import with_statement
131
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
5
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
6 from jobman import DD
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
7
139
7d8366fb90bf Ajouté des __init__.py dans l'arborescence pour que les scripts puissent être utilisés avec des paths pour jobman, et fait pas mal de modifs dans stacked_dae pour pouvoir réutiliser le travail fait pour des tests où le pretraining est le même.
fsavard
parents: 131
diff changeset
8 # from pylearn codebase
7d8366fb90bf Ajouté des __init__.py dans l'arborescence pour que les scripts puissent être utilisés avec des paths pour jobman, et fait pas mal de modifs dans stacked_dae pour pouvoir réutiliser le travail fait pour des tests où le pretraining est le même.
fsavard
parents: 131
diff changeset
9 def update_locals(obj, dct):
7d8366fb90bf Ajouté des __init__.py dans l'arborescence pour que les scripts puissent être utilisés avec des paths pour jobman, et fait pas mal de modifs dans stacked_dae pour pouvoir réutiliser le travail fait pour des tests où le pretraining est le même.
fsavard
parents: 131
diff changeset
10 if 'self' in dct:
7d8366fb90bf Ajouté des __init__.py dans l'arborescence pour que les scripts puissent être utilisés avec des paths pour jobman, et fait pas mal de modifs dans stacked_dae pour pouvoir réutiliser le travail fait pour des tests où le pretraining est le même.
fsavard
parents: 131
diff changeset
11 del dct['self']
7d8366fb90bf Ajouté des __init__.py dans l'arborescence pour que les scripts puissent être utilisés avec des paths pour jobman, et fait pas mal de modifs dans stacked_dae pour pouvoir réutiliser le travail fait pour des tests où le pretraining est le même.
fsavard
parents: 131
diff changeset
12 obj.__dict__.update(dct)
7d8366fb90bf Ajouté des __init__.py dans l'arborescence pour que les scripts puissent être utilisés avec des paths pour jobman, et fait pas mal de modifs dans stacked_dae pour pouvoir réutiliser le travail fait pour des tests où le pretraining est le même.
fsavard
parents: 131
diff changeset
13
131
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
14 def produit_croise_jobs(val_dict):
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
15 job_list = [DD()]
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
16 all_keys = val_dict.keys()
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
17
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
18 for key in all_keys:
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
19 possible_values = val_dict[key]
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
20 new_job_list = []
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
21 for val in possible_values:
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
22 for job in job_list:
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
23 to_insert = job.copy()
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
24 to_insert.update({key: val})
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
25 new_job_list.append(to_insert)
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
26 job_list = new_job_list
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
27
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
28 return job_list
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
29
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
30 def test_produit_croise_jobs():
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
31 vals = {'a': [1,2], 'b': [3,4,5]}
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
32 print produit_croise_jobs(vals)
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
33
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
34
139
7d8366fb90bf Ajouté des __init__.py dans l'arborescence pour que les scripts puissent être utilisés avec des paths pour jobman, et fait pas mal de modifs dans stacked_dae pour pouvoir réutiliser le travail fait pour des tests où le pretraining est le même.
fsavard
parents: 131
diff changeset
35 # taken from http://stackoverflow.com/questions/276052/how-to-get-current-cpu-and-ram-usage-in-python
7d8366fb90bf Ajouté des __init__.py dans l'arborescence pour que les scripts puissent être utilisés avec des paths pour jobman, et fait pas mal de modifs dans stacked_dae pour pouvoir réutiliser le travail fait pour des tests où le pretraining est le même.
fsavard
parents: 131
diff changeset
36 """Simple module for getting amount of memory used by a specified user's
7d8366fb90bf Ajouté des __init__.py dans l'arborescence pour que les scripts puissent être utilisés avec des paths pour jobman, et fait pas mal de modifs dans stacked_dae pour pouvoir réutiliser le travail fait pour des tests où le pretraining est le même.
fsavard
parents: 131
diff changeset
37 processes on a UNIX system.
7d8366fb90bf Ajouté des __init__.py dans l'arborescence pour que les scripts puissent être utilisés avec des paths pour jobman, et fait pas mal de modifs dans stacked_dae pour pouvoir réutiliser le travail fait pour des tests où le pretraining est le même.
fsavard
parents: 131
diff changeset
38 It uses UNIX ps utility to get the memory usage for a specified username and
7d8366fb90bf Ajouté des __init__.py dans l'arborescence pour que les scripts puissent être utilisés avec des paths pour jobman, et fait pas mal de modifs dans stacked_dae pour pouvoir réutiliser le travail fait pour des tests où le pretraining est le même.
fsavard
parents: 131
diff changeset
39 pipe it to awk for summing up per application memory usage and return the total.
7d8366fb90bf Ajouté des __init__.py dans l'arborescence pour que les scripts puissent être utilisés avec des paths pour jobman, et fait pas mal de modifs dans stacked_dae pour pouvoir réutiliser le travail fait pour des tests où le pretraining est le même.
fsavard
parents: 131
diff changeset
40 Python's Popen() from subprocess module is used for spawning ps and awk.
7d8366fb90bf Ajouté des __init__.py dans l'arborescence pour que les scripts puissent être utilisés avec des paths pour jobman, et fait pas mal de modifs dans stacked_dae pour pouvoir réutiliser le travail fait pour des tests où le pretraining est le même.
fsavard
parents: 131
diff changeset
41
7d8366fb90bf Ajouté des __init__.py dans l'arborescence pour que les scripts puissent être utilisés avec des paths pour jobman, et fait pas mal de modifs dans stacked_dae pour pouvoir réutiliser le travail fait pour des tests où le pretraining est le même.
fsavard
parents: 131
diff changeset
42 """
7d8366fb90bf Ajouté des __init__.py dans l'arborescence pour que les scripts puissent être utilisés avec des paths pour jobman, et fait pas mal de modifs dans stacked_dae pour pouvoir réutiliser le travail fait pour des tests où le pretraining est le même.
fsavard
parents: 131
diff changeset
43
7d8366fb90bf Ajouté des __init__.py dans l'arborescence pour que les scripts puissent être utilisés avec des paths pour jobman, et fait pas mal de modifs dans stacked_dae pour pouvoir réutiliser le travail fait pour des tests où le pretraining est le même.
fsavard
parents: 131
diff changeset
44 import subprocess
7d8366fb90bf Ajouté des __init__.py dans l'arborescence pour que les scripts puissent être utilisés avec des paths pour jobman, et fait pas mal de modifs dans stacked_dae pour pouvoir réutiliser le travail fait pour des tests où le pretraining est le même.
fsavard
parents: 131
diff changeset
45
7d8366fb90bf Ajouté des __init__.py dans l'arborescence pour que les scripts puissent être utilisés avec des paths pour jobman, et fait pas mal de modifs dans stacked_dae pour pouvoir réutiliser le travail fait pour des tests où le pretraining est le même.
fsavard
parents: 131
diff changeset
46 class MemoryMonitor(object):
7d8366fb90bf Ajouté des __init__.py dans l'arborescence pour que les scripts puissent être utilisés avec des paths pour jobman, et fait pas mal de modifs dans stacked_dae pour pouvoir réutiliser le travail fait pour des tests où le pretraining est le même.
fsavard
parents: 131
diff changeset
47
7d8366fb90bf Ajouté des __init__.py dans l'arborescence pour que les scripts puissent être utilisés avec des paths pour jobman, et fait pas mal de modifs dans stacked_dae pour pouvoir réutiliser le travail fait pour des tests où le pretraining est le même.
fsavard
parents: 131
diff changeset
48 def __init__(self, username):
7d8366fb90bf Ajouté des __init__.py dans l'arborescence pour que les scripts puissent être utilisés avec des paths pour jobman, et fait pas mal de modifs dans stacked_dae pour pouvoir réutiliser le travail fait pour des tests où le pretraining est le même.
fsavard
parents: 131
diff changeset
49 """Create new MemoryMonitor instance."""
7d8366fb90bf Ajouté des __init__.py dans l'arborescence pour que les scripts puissent être utilisés avec des paths pour jobman, et fait pas mal de modifs dans stacked_dae pour pouvoir réutiliser le travail fait pour des tests où le pretraining est le même.
fsavard
parents: 131
diff changeset
50 self.username = username
7d8366fb90bf Ajouté des __init__.py dans l'arborescence pour que les scripts puissent être utilisés avec des paths pour jobman, et fait pas mal de modifs dans stacked_dae pour pouvoir réutiliser le travail fait pour des tests où le pretraining est le même.
fsavard
parents: 131
diff changeset
51
7d8366fb90bf Ajouté des __init__.py dans l'arborescence pour que les scripts puissent être utilisés avec des paths pour jobman, et fait pas mal de modifs dans stacked_dae pour pouvoir réutiliser le travail fait pour des tests où le pretraining est le même.
fsavard
parents: 131
diff changeset
52 def usage(self):
7d8366fb90bf Ajouté des __init__.py dans l'arborescence pour que les scripts puissent être utilisés avec des paths pour jobman, et fait pas mal de modifs dans stacked_dae pour pouvoir réutiliser le travail fait pour des tests où le pretraining est le même.
fsavard
parents: 131
diff changeset
53 """Return int containing memory used by user's processes."""
7d8366fb90bf Ajouté des __init__.py dans l'arborescence pour que les scripts puissent être utilisés avec des paths pour jobman, et fait pas mal de modifs dans stacked_dae pour pouvoir réutiliser le travail fait pour des tests où le pretraining est le même.
fsavard
parents: 131
diff changeset
54 self.process = subprocess.Popen("ps -u %s -o rss | awk '{sum+=$1} END {print sum}'" % self.username,
7d8366fb90bf Ajouté des __init__.py dans l'arborescence pour que les scripts puissent être utilisés avec des paths pour jobman, et fait pas mal de modifs dans stacked_dae pour pouvoir réutiliser le travail fait pour des tests où le pretraining est le même.
fsavard
parents: 131
diff changeset
55 shell=True,
7d8366fb90bf Ajouté des __init__.py dans l'arborescence pour que les scripts puissent être utilisés avec des paths pour jobman, et fait pas mal de modifs dans stacked_dae pour pouvoir réutiliser le travail fait pour des tests où le pretraining est le même.
fsavard
parents: 131
diff changeset
56 stdout=subprocess.PIPE,
7d8366fb90bf Ajouté des __init__.py dans l'arborescence pour que les scripts puissent être utilisés avec des paths pour jobman, et fait pas mal de modifs dans stacked_dae pour pouvoir réutiliser le travail fait pour des tests où le pretraining est le même.
fsavard
parents: 131
diff changeset
57 )
7d8366fb90bf Ajouté des __init__.py dans l'arborescence pour que les scripts puissent être utilisés avec des paths pour jobman, et fait pas mal de modifs dans stacked_dae pour pouvoir réutiliser le travail fait pour des tests où le pretraining est le même.
fsavard
parents: 131
diff changeset
58 self.stdout_list = self.process.communicate()[0].split('\n')
7d8366fb90bf Ajouté des __init__.py dans l'arborescence pour que les scripts puissent être utilisés avec des paths pour jobman, et fait pas mal de modifs dans stacked_dae pour pouvoir réutiliser le travail fait pour des tests où le pretraining est le même.
fsavard
parents: 131
diff changeset
59 return int(self.stdout_list[0])
7d8366fb90bf Ajouté des __init__.py dans l'arborescence pour que les scripts puissent être utilisés avec des paths pour jobman, et fait pas mal de modifs dans stacked_dae pour pouvoir réutiliser le travail fait pour des tests où le pretraining est le même.
fsavard
parents: 131
diff changeset
60