comparison tools/protein_analysis/seq_analysis_utils.py @ 3:f3b373a41f81

Migrated tool version 0.0.6 from old tool shed archive to new tool shed repository
author peterjc
date Tue, 07 Jun 2011 18:05:13 -0400
parents bca9bc7fdaef
children a290c6d4e658
comparison
equal deleted inserted replaced
2:6901298ac16c 3:f3b373a41f81
100 if os.path.isfile(f): 100 if os.path.isfile(f):
101 os.remove(f) 101 os.remove(f)
102 raise err 102 raise err
103 return files 103 return files
104 104
105 def run_jobs(jobs, threads): 105 def run_jobs(jobs, threads, verbose=False):
106 """Takes list of cmd strings, returns dict with error levels.""" 106 """Takes list of cmd strings, returns dict with error levels."""
107 pending = jobs[:] 107 pending = jobs[:]
108 running = [] 108 running = []
109 results = {} 109 results = {}
110 while pending or running: 110 while pending or running:
111 #print "%i jobs pending, %i running, %i completed" \
112 # % (len(jobs), len(running), len(results))
113 #See if any have finished 111 #See if any have finished
114 for (cmd, process) in running: 112 for (cmd, process) in running:
115 return_code = process.wait() 113 return_code = process.poll() #non-blocking
116 if return_code is not None: 114 if return_code is not None:
117 results[cmd] = return_code 115 results[cmd] = return_code
118 running = [(cmd, process) for (cmd, process) in running \ 116 running = [(cmd, process) for (cmd, process) in running \
119 if cmd not in results] 117 if cmd not in results]
118 if verbose:
119 print "%i jobs pending, %i running, %i completed" \
120 % (len(pending), len(running), len(results))
120 #See if we can start any new threads 121 #See if we can start any new threads
121 while pending and len(running) < threads: 122 while pending and len(running) < threads:
122 cmd = pending.pop(0) 123 cmd = pending.pop(0)
124 if verbose:
125 print cmd
123 process = subprocess.Popen(cmd, shell=True) 126 process = subprocess.Popen(cmd, shell=True)
124 running.append((cmd, process)) 127 running.append((cmd, process))
125 #Loop... 128 #Loop...
126 sleep(1) 129 sleep(10)
127 #print "%i jobs completed" % len(results) 130 if verbose:
131 print "%i jobs completed" % len(results)
128 assert set(jobs) == set(results) 132 assert set(jobs) == set(results)
129 return results 133 return results