new version of MaSh program, with proper shutdown
authorblanchet
Mon, 23 Sep 2013 09:08:07 +0200
changeset 53789 8d9f4e89d8c8
parent 53788 b319a0c8b8a2
child 53790 298774dbdde0
new version of MaSh program, with proper shutdown
src/HOL/Tools/Sledgehammer/MaSh/src/ExpandFeatures.py
src/HOL/Tools/Sledgehammer/MaSh/src/mash.py
src/HOL/Tools/Sledgehammer/MaSh/src/server.py
--- a/src/HOL/Tools/Sledgehammer/MaSh/src/ExpandFeatures.py	Sun Sep 22 21:04:53 2013 +0200
+++ b/src/HOL/Tools/Sledgehammer/MaSh/src/ExpandFeatures.py	Mon Sep 23 09:08:07 2013 +0200
@@ -5,7 +5,7 @@
 '''
 
 from math import log
-from gensim import corpora, models, similarities
+#from gensim import corpora, models, similarities
 
 class ExpandFeatures(object):
 
@@ -16,7 +16,7 @@
         self.featureCounts = {}
         self.counter = 0        
         self.corpus = []
-        self.LSIModel = models.lsimodel.LsiModel(self.corpus,num_topics=500)
+#        self.LSIModel = models.lsimodel.LsiModel(self.corpus,num_topics=500)
 
     def initialize(self,dicts):
         self.dicts = dicts
@@ -79,9 +79,9 @@
         #print features.keys()        
         #tfidfcorpus = [tfidfmodel[x] for x in self.corpus]
         #newFeatures = LSI[[(x,1) for x in features.keys()]]
-        newFeatures = self.LSIModel[[(x,1) for x in features.keys()]]
-        print features
-        print newFeatures
+        #newFeatures = self.LSIModel[[(x,1) for x in features.keys()]]
+        #print features
+        #print newFeatures
         #print newFeatures
         
         """
@@ -154,7 +154,8 @@
         """
         #print 'fold',len(features)
         #print 'fnew',len(newFeatures)
-        return dict(newFeatures)
+        #return dict(newFeatures)
+        return features
 
 if __name__ == "__main__":
     pass
--- a/src/HOL/Tools/Sledgehammer/MaSh/src/mash.py	Sun Sep 22 21:04:53 2013 +0200
+++ b/src/HOL/Tools/Sledgehammer/MaSh/src/mash.py	Mon Sep 23 09:08:07 2013 +0200
@@ -81,9 +81,10 @@
 
     # Shutdown commands need not start the server fist.
     if args.shutdownServer:
-        logger.info('Shutting down server.')
+        logger.info('Sending shutdown command.')
         try:
-            communicate('shutdown',args.host,args.port)
+            received = communicate('shutdown',args.host,args.port)
+            logger.info(received)
         except:
             pass
         return
--- a/src/HOL/Tools/Sledgehammer/MaSh/src/server.py	Sun Sep 22 21:04:53 2013 +0200
+++ b/src/HOL/Tools/Sledgehammer/MaSh/src/server.py	Mon Sep 23 09:08:07 2013 +0200
@@ -15,7 +15,7 @@
 from KNN import KNN,euclidean
 from KNNs import KNNAdaptPointFeatures,KNNUrban
 from predefined import Predefined
-#from ExpandFeatures import ExpandFeatures
+from ExpandFeatures import ExpandFeatures
 from stats import Statistics
 
 
@@ -36,7 +36,7 @@
             statsFile = os.path.join(self.args.outputDir,self.args.saveStats)
             self.stats.save(statsFile)   
                
-    def save_and_shutdown(self):     
+    def save_and_shutdown(self): 
         self.save()          
         self.shutdown()
 
@@ -64,9 +64,9 @@
             self.server.model = Predefined(self.server.args.predef)
         else: # Default case
             self.server.model = sparseNBClassifier(self.server.args.NBDefaultPriorWeight,self.server.args.NBPosWeight,self.server.args.NBDefVal)
-#        if self.server.args.expandFeatures:
-#            self.server.expandFeatures = ExpandFeatures(self.server.dicts)
-#            self.server.expandFeatures.initialize(self.server.dicts)
+        if self.server.args.expandFeatures:
+            self.server.expandFeatures = ExpandFeatures(self.server.dicts)
+            self.server.expandFeatures.initialize(self.server.dicts)
         # Create Model
         if os.path.isfile(self.server.args.modelFile):
             self.server.model.load(self.server.args.modelFile)          
@@ -104,8 +104,8 @@
                 self.server.logger.debug('Poor predictions: %s',bp)
             self.server.statementCounter += 1
 
-#        if self.server.args.expandFeatures:
-#            self.server.expandFeatures.update(self.server.dicts.featureDict[problemId],self.server.dicts.dependenciesDict[problemId])
+        if self.server.args.expandFeatures:
+            self.server.expandFeatures.update(self.server.dicts.featureDict[problemId],self.server.dicts.dependenciesDict[problemId])
         # Update Dependencies, p proves p
         self.server.dicts.dependenciesDict[problemId] = [problemId]+self.server.dicts.dependenciesDict[problemId]
         self.server.model.update(problemId,self.server.dicts.featureDict[problemId],self.server.dicts.dependenciesDict[problemId])
@@ -126,8 +126,8 @@
             numberOfPredictions = self.server.args.numberOfPredictions
         if not hints == []:
             self.server.model.update('hints',features,hints)
-#        if self.server.args.expandFeatures:
-#            features = self.server.expandFeatures.expand(features)
+        if self.server.args.expandFeatures:
+            features = self.server.expandFeatures.expand(features)
         # Create predictions
         self.server.logger.debug('Starting computation for line %s',self.server.callCounter)
                 
@@ -148,12 +148,19 @@
         self.request.sendall('Shutting down server.')
         if saveModels:
             self.server.save()
-        self.server.shutdown()
-    
+        self.server.idle_timer.cancel()
+        self.server.idle_timer = Timer(0.5, self.server.shutdown)
+        self.server.idle_timer.start()    
+
     def handle(self):
         # self.request is the TCP socket connected to the client
         self.data = self.request.recv(4194304).strip()
         self.server.lock.acquire()
+        # Update idle shutdown timer
+        self.server.idle_timer.cancel()
+        self.server.idle_timer = Timer(self.server.idle_timeout, self.server.save_and_shutdown)
+        self.server.idle_timer.start()        
+
         self.startTime = time()  
         if self.data == 'shutdown':
             self.shutdown()         
@@ -176,23 +183,15 @@
         else:
             self.request.sendall('Unspecified input format: \n%s',self.data)
         self.server.callCounter += 1
-        # Update idle shutdown timer
-        self.server.idle_timer.cancel()
-        self.server.idle_timer = Timer(self.server.idle_timeout, self.server.save_and_shutdown)
-        self.server.idle_timer.start()        
         self.server.lock.release()
 
 if __name__ == "__main__":
     HOST, PORT = "localhost", 9255
     SocketServer.TCPServer.allow_reuse_address = True
     server = ThreadingTCPServer((HOST, PORT), MaShHandler)
-
-    # Activate the server; this will keep running until you
-    # interrupt the program with Ctrl-C
     server.serve_forever()        
 
 
-
     
     
-    
+    
\ No newline at end of file