Skip to content
Snippets Groups Projects
Select Git revision
  • 572b944686804bf322ea91649c0a7c1870c26f48
  • master default
2 results

testappm.cpp

Blame
  • push-multiple-to-influx.py 1.59 KiB
    #!/usr/bin/env python2
    # -*- coding: utf-8 -*-
    import os
    import subprocess
    import multiprocessing
    import sys
    import time
    import yaml
    
    
    def work(cmd):
        print '[{}] Calling {}'.format(multiprocessing.current_process(), ' '.join(cmd))
        subprocess.call(cmd)
        sys.stdout.flush()
        time.sleep(1)
        return cmd
    
    
    if __name__ == '__main__':
        with open('push-multiple-to-influx.yml') as fdr:
            content = yaml.load(fdr)
        # print content
        base_dir = content['base_dir']
        python_executable = content['python_executable']
        solutions = content['solutions']
        sizes = content['sizes']
        queries = content['queries']
    
        count = multiprocessing.cpu_count()
        pool = multiprocessing.Pool(processes=count)
        commands = []
    
        for solution_name in solutions:
            fileformat = solutions[solution_name]['fileformat']
            for size in sizes:
                size = str(size)
                for query in queries:
                    query = str(query)
                    basename = fileformat.replace(r'%size', size).replace(r'%query', query)
                    filename = os.path.join(base_dir, solution_name, basename)
                    if not os.path.exists(filename):
                        print 'File "{}" not found'.format(filename)
                        continue
                    cmd = [python_executable, '-f', filename,
                           '-s', size,
                           '-q', query,
                           '-n', solution_name]
                    commands.append(cmd)
        print len(commands)
        results = []
        r = pool.map_async(work, commands, callback=results.append)
        r.wait()
        print len(results)