allpy
annotate utils/pool @ 1088:c1091715f8a3
Added allpy.util.Silence to faciliate running most code with as little noise as possible
This class is intended for use around noisy chunks of code using `with`, e.g.::
with Silence():
structure = PDBParser().load_pdb(file)
This will produce no output to stderr if no exceptions are raised in the code.
Otherwise, all output will be printed as if the code was run without this
wrapper. See docstrings for more documentation.
author | Daniil Alexeyevsky <dendik@kodomo.fbb.msu.ru> |
---|---|
date | Fri, 01 Jun 2012 13:43:02 +0400 |
parents | |
children |
rev | line source |
---|---|
dendik@799 | 1 #!/usr/bin/python |
dendik@799 | 2 import subprocess |
dendik@799 | 3 import os |
dendik@799 | 4 import shlex |
dendik@799 | 5 import optparse |
dendik@799 | 6 |
dendik@799 | 7 p = optparse.OptionParser() |
dendik@799 | 8 p.add_option('-n', '--size', type=int, help='Pool size') |
dendik@799 | 9 p.add_option('-c', '--cmd', |
dendik@799 | 10 help='Command template. Insert {} for argument.' |
dendik@799 | 11 ' Put the argument in double quotes if it may contain spaces.') |
dendik@799 | 12 options, args = p.parse_args() |
dendik@799 | 13 |
dendik@799 | 14 spawned = 0 |
dendik@799 | 15 for arg in args: |
dendik@799 | 16 if spawned > options.size: |
dendik@799 | 17 os.wait() |
dendik@799 | 18 spawned -= 1 |
dendik@799 | 19 cmd = shlex.split(options.cmd.replace('{}', arg)) |
dendik@799 | 20 subprocess.Popen(cmd) |
dendik@799 | 21 spawned += 1 |
dendik@799 | 22 |
dendik@799 | 23 try: |
dendik@799 | 24 while True: |
dendik@799 | 25 os.wait() |
dendik@799 | 26 except Exception: |
dendik@799 | 27 pass |
dendik@799 | 28 |
dendik@799 | 29 # vim: set ts=4 sts=4 et sw=4: |