Mercurial > hg > nsaunier > traffic-intelligence
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): |
