1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1.2 +++ b/tests/start_indexer.py Mon Sep 26 21:59:16 2005 +0000
1.3 @@ -0,0 +1,43 @@
1.4 +#!/usr/bin/env python
1.5 +
1.6 +from parallel import start, Exchange
1.7 +from Dict import Indexer, Searcher, update
1.8 +
1.9 +def apply_indexer(channel, filename):
1.10 + print "Indexing", filename
1.11 + indexer = Indexer(filename)
1.12 + channel.send(indexer.get_index())
1.13 +
1.14 +def get_searcher(filenames):
1.15 + master_index = {}
1.16 +
1.17 + # Start indexing.
1.18 +
1.19 + channels = []
1.20 + for filename in filenames:
1.21 + channels.append(start(apply_indexer, filename))
1.22 +
1.23 + # Start listening for responses.
1.24 +
1.25 + exchange = Exchange(channels)
1.26 + while len(channels) > 0:
1.27 + print "Waiting for %d channels..." % len(channels)
1.28 + for channel in exchange.ready():
1.29 + index = channel.receive()
1.30 + update(master_index, index)
1.31 + channels.remove(channel)
1.32 +
1.33 + # Provide a search interface.
1.34 +
1.35 + return Searcher(master_index)
1.36 +
1.37 +if __name__ == "__main__":
1.38 + import sys
1.39 + filenames = sys.argv[1:]
1.40 + searcher = get_searcher(filenames)
1.41 + while 1:
1.42 + print "Pattern:",
1.43 + pattern = raw_input()
1.44 + print searcher.find(pattern)
1.45 +
1.46 +# vim: tabstop=4 expandtab shiftwidth=4