1320 def __init__(self, nWorkers, config, log):
1321 self.log = log
1322 self.config = config
1323
1324 self.log.name = "GaudiPython-Parallel-Logger"
1325 self.log.info("GaudiPython Parallel Process Co-ordinator beginning")
1326
1327 if nWorkers == -1:
1328
1329 self.nWorkers = cpu_count()
1330 else:
1331 self.nWorkers = nWorkers
1332
1333 self.qs = self.SetupQueues()
1334 self.hq = JoinableQueue()
1335 self.fq = JoinableQueue()
1336
1337
1338 self.sInit = Syncer(
1339 self.nWorkers, self.log, limit=WAIT_INITIALISE, step=STEP_INITIALISE
1340 )
1341 self.sRun = Syncer(
1342 self.nWorkers,
1343 self.log,
1344 manyEvents=True,
1345 limit=WAIT_SINGLE_EVENT,
1346 step=STEP_EVENT,
1347 firstEvent=WAIT_FIRST_EVENT,
1348 )
1349 self.sFin = Syncer(
1350 self.nWorkers, self.log, limit=WAIT_FINALISE, step=STEP_FINALISE
1351 )
1352
1353 self.histSyncEvent = Event()
1354
1355
1356 params = (self.nWorkers, self.histSyncEvent, self.config, self.log)
1357
1358 self.subworkers = []
1359
1360 for i in range(1, self.nWorkers):
1361 sub = Subworker(
1362 i, self.getQueues(i), self.getSyncEvents(i), params, self.subworkers
1363 )
1364 self.subworkers.append(sub)
1365 self.reader = Reader(
1366 self.getQueues(-1), self.getSyncEvents(-1), params, self.subworkers
1367 )
1368 self.workers = []
1369 wk = Worker(
1370 0, self.getQueues(0), self.getSyncEvents(0), params, self.subworkers
1371 )
1372 self.writer = Writer(
1373 self.getQueues(-2), self.getSyncEvents(-2), params, self.subworkers
1374 )
1375
1376 self.system = []
1377 self.system.append(self.writer)
1378 self.system.append(wk)
1379 self.system.append(self.reader)
1380