summaryrefslogtreecommitdiff
path: root/realtime/rt/rt.py
diff options
context:
space:
mode:
authorMichael Denkowski <mdenkows@cs.cmu.edu>2013-09-25 18:45:28 -0700
committerMichael Denkowski <mdenkows@cs.cmu.edu>2013-09-25 18:45:28 -0700
commit49ddc45e717ac495c6adf80a20d02a1672a069df (patch)
tree1cad69a9ba7cfb5e984d8625f176b1ab4b6d614d /realtime/rt/rt.py
parent5866bdb0541bf136d897cc8ecc72c5ed4b6a93ee (diff)
Threading tests
Diffstat (limited to 'realtime/rt/rt.py')
-rw-r--r--realtime/rt/rt.py4
1 files changed, 4 insertions, 0 deletions
diff --git a/realtime/rt/rt.py b/realtime/rt/rt.py
index 6f1fb70f..f8126283 100644
--- a/realtime/rt/rt.py
+++ b/realtime/rt/rt.py
@@ -101,6 +101,8 @@ class RealtimeTranslator:
# ctx -> list of (source, target, alignment)
self.ctx_data = {}
+ # Grammar extractor is not threadsafe
+ self.extractor_sem = threading.Semaphore()
# ctx -> deque of file
self.grammar_files = {}
# ctx -> dict of {sentence: file}
@@ -181,8 +183,10 @@ class RealtimeTranslator:
(fid, grammar_file) = tempfile.mkstemp(dir=self.decoders[ctx_name].tmp, prefix='grammar.')
os.close(fid)
with open(grammar_file, 'w') as output:
+ self.extractor_sem.acquire()
for rule in self.extractor.grammar(sentence, ctx_name):
output.write('{}\n'.format(str(rule)))
+ self.extractor_sem.release()
grammar_files = self.grammar_files[ctx_name]
if len(grammar_files) == self.cache_size:
rm_sent = grammar_files.popleft()