view scripts/stacked_dae/utils.py @ 160:68160fd149fe

Simple script to doctest all modules beneath ift6266. This ecxcludes scripts since most of the files launch computations when imported and some even start a lot of jobs on the cluster (This happened to me when testing).
author Arnaud Bergeron <abergeron@gmail.com>
date Thu, 25 Feb 2010 17:27:49 -0500
parents 7d8366fb90bf
children
line wrap: on
line source

#!/usr/bin/python

from jobman import DD

# from pylearn codebase
def update_locals(obj, dct):
    if 'self' in dct:
        del dct['self']
    obj.__dict__.update(dct)

def produit_croise_jobs(val_dict):
    job_list = [DD()]
    all_keys = val_dict.keys()

    for key in all_keys:
        possible_values = val_dict[key]
        new_job_list = []
        for val in possible_values:
            for job in job_list:
                to_insert = job.copy()
                to_insert.update({key: val})
                new_job_list.append(to_insert)
        job_list = new_job_list

    return job_list

def test_produit_croise_jobs():
    vals = {'a': [1,2], 'b': [3,4,5]}
    print produit_croise_jobs(vals)


# taken from http://stackoverflow.com/questions/276052/how-to-get-current-cpu-and-ram-usage-in-python
"""Simple module for getting amount of memory used by a specified user's
processes on a UNIX system.
It uses UNIX ps utility to get the memory usage for a specified username and
pipe it to awk for summing up per application memory usage and return the total.
Python's Popen() from subprocess module is used for spawning ps and awk.

"""

import subprocess

class MemoryMonitor(object):

    def __init__(self, username):
        """Create new MemoryMonitor instance."""
        self.username = username

    def usage(self):
        """Return int containing memory used by user's processes."""
        self.process = subprocess.Popen("ps -u %s -o rss | awk '{sum+=$1} END {print sum}'" % self.username,
                                        shell=True,
                                        stdout=subprocess.PIPE,
                                        )
        self.stdout_list = self.process.communicate()[0].split('\n')
        return int(self.stdout_list[0])