def perform_search(xml_string, results):
    # Initialize the processor
    processor = IEEEProcessor()

    # Then, read the XML string into a ETree
    root = ET.fromstring(xml_string)
    # Next, send it for processing
    processor.ProcessSearchResults(root)

    # And finally, get the results and save them to the results Queue
    results.put(processor.get_entries())
    def prepare_search(self, query_string):
        """
        Prepares the threaded search system for running efficiently in multiple threads
        """
        # Initialize the Search Engine and the IEEE Processor
        se = SearchEngine()
        processor = IEEEProcessor()

        # First, run the test query at the server
        query_results = se.make_test_query(query_string)
        # Second, read the results into XML parser root element
        root = ET.fromstring(query_results)
        # Third, get the amount of found results
        self._total_found = processor.get_amount_entries_found(root)
        self._calculate_amount_threads(self._total_found)