summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStan Seibert <stan@mtrr.org>2012-02-17 14:22:05 -0500
committertlatorre <tlatorre@uchicago.edu>2021-05-09 08:42:38 -0700
commit2e8d535456730aed81d47af2d78ef5775810151b (patch)
tree16f7a8f3df524d27ada83241b1b4a7bdc20f6ee6
parentaa14bc9f0947a77781c1234c38f422f18b2fe154 (diff)
downloadchroma-2e8d535456730aed81d47af2d78ef5775810151b.tar.gz
chroma-2e8d535456730aed81d47af2d78ef5775810151b.tar.bz2
chroma-2e8d535456730aed81d47af2d78ef5775810151b.zip
Improve startup time in simulation by letting GEANT4 processes initialize in background.
-rw-r--r--chroma/generator/photon.py16
1 files changed, 10 insertions, 6 deletions
diff --git a/chroma/generator/photon.py b/chroma/generator/photon.py
index 39e8cf4..43c3a49 100644
--- a/chroma/generator/photon.py
+++ b/chroma/generator/photon.py
@@ -81,13 +81,17 @@ class G4ParallelGenerator(object):
self.photon_socket = self.zmq_context.socket(zmq.PULL)
self.photon_socket.bind(self.photon_address)
- # Verify everyone is running and connected to avoid
- # sending all the events to one client.
- for i in xrange(nprocesses):
- msg = self.photon_socket.recv()
- assert msg == 'READY'
-
+ self.processes_initialized = False
+
def generate_events(self, vertex_iterator):
+ if not self.processes_initialized:
+ # Verify everyone is running and connected to avoid
+ # sending all the events to one client.
+ for i in xrange(len(self.processes)):
+ msg = self.photon_socket.recv()
+ assert msg == 'READY'
+ self.processes_initialized = True
+
# Doing this to avoid a deadlock caused by putting to one queue
# while getting from another.
vertex_list = list(vertex_iterator)