comparison python/prediction.py @ 559:806df5f61c03

adapted safety-analysis script to use multi-threading
author Nicolas Saunier <nicolas.saunier@polymtl.ca>
date Tue, 15 Jul 2014 01:25:33 -0400
parents b91f33e098ee
children a9c1d61a89b4
comparison
equal deleted inserted replaced
558:a80ef6931fd8 559:806df5f61c03
184 commonTimeInterval = timeInterval 184 commonTimeInterval = timeInterval
185 else: 185 else:
186 commonTimeInterval = obj1.commonTimeInterval(obj2) 186 commonTimeInterval = obj1.commonTimeInterval(obj2)
187 if nProcesses == 1: 187 if nProcesses == 1:
188 for i in list(commonTimeInterval)[:-1]: # do not look at the 1 last position/velocities, often with errors 188 for i in list(commonTimeInterval)[:-1]: # do not look at the 1 last position/velocities, often with errors
189 i, collisionPoints[i], crossingZones[i] = computeCrossingsCollisionsAtInstant(predictionParams, i, obj1, obj2, collisionDistanceThreshold, timeHorizon, computeCZ, debug) 189 i, cp, cz = computeCrossingsCollisionsAtInstant(predictionParams, i, obj1, obj2, collisionDistanceThreshold, timeHorizon, computeCZ, debug)
190 if len(cp) != 0:
191 collisionPoints[i] = cp
192 if len(cz) != 0:
193 crossingZones[i] = cz
190 else: 194 else:
191 from multiprocessing import Pool 195 from multiprocessing import Pool
192 pool = Pool(processes = nProcesses) 196 pool = Pool(processes = nProcesses)
193 jobs = [pool.apply_async(computeCrossingsCollisionsAtInstant, args = (predictionParams, i, obj1, obj2, collisionDistanceThreshold, timeHorizon, computeCZ, debug)) for i in list(commonTimeInterval)[:-1]] 197 jobs = [pool.apply_async(computeCrossingsCollisionsAtInstant, args = (predictionParams, i, obj1, obj2, collisionDistanceThreshold, timeHorizon, computeCZ, debug)) for i in list(commonTimeInterval)[:-1]]
194 #results = [j.get() for j in jobs] 198 #results = [j.get() for j in jobs]
195 #results.sort() 199 #results.sort()
196 for j in jobs: 200 for j in jobs:
197 i, cp, cz = j.get() 201 i, cp, cz = j.get()
198 #if len(cp) != 0 or len(cz) != 0: 202 #if len(cp) != 0 or len(cz) != 0:
199 collisionPoints[i] = cp 203 if len(cp) != 0:
200 crossingZones[i] = cz 204 collisionPoints[i] = cp
205 if len(cz) != 0:
206 crossingZones[i] = cz
201 pool.close() 207 pool.close()
202 return collisionPoints, crossingZones 208 return collisionPoints, crossingZones
203 209
204 class PredictionParameters: 210 class PredictionParameters:
205 def __init__(self, name, maxSpeed): 211 def __init__(self, name, maxSpeed):