mailr15587 - /1.3/multi/multi_processor_base.py


Others Months | Index by Date | Thread Index
>>   [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Header


Content

Posted by edward on March 21, 2012 - 11:06:
Author: bugman
Date: Wed Mar 21 11:06:41 2012
New Revision: 15587

URL: http://svn.gna.org/viewcvs/relax?rev=15587&view=rev
Log:
Clean up of the Multi_processor.run_command_queue() method.


Modified:
    1.3/multi/multi_processor_base.py

Modified: 1.3/multi/multi_processor_base.py
URL: 
http://svn.gna.org/viewcvs/relax/1.3/multi/multi_processor_base.py?rev=15587&r1=15586&r2=15587&view=diff
==============================================================================
--- 1.3/multi/multi_processor_base.py (original)
+++ 1.3/multi/multi_processor_base.py Wed Mar 21 11:06:41 2012
@@ -243,48 +243,55 @@
 
     #TODO: move up a level add virtaul send and revieve functions
     def run_command_queue(self, queue):
-            self.assert_on_master()
-
-            running_set = set()
-            idle_set = set([i for i in range(1, self.processor_size()+1)])
-
-            if self.threaded_result_processing:
-                result_queue = Threaded_result_queue(self)
-            else:
-                result_queue = Immediate_result_queue(self)
-
-            while len(queue) != 0:
-
-                while len(idle_set) != 0:
-                    if len(queue) != 0:
-                        command = queue.pop()
-                        dest = idle_set.pop()
-                        self.master_queue_command(command=command, dest=dest)
-                        running_set.add(dest)
-                    else:
-                        break
-
-                # Loop until the queue of calculations is depleted.
-                while len(running_set) != 0:
-                    # Get the result.
-                    result = self.master_recieve_result()
-
-                    # Debugging print out.
-                    if verbosity.level():
-                        print('\nIdle set:    %s' % idle_set)
-                        print('Running set: %s' % running_set)
-
-                    # Shift the processor rank to the idle set.
-                    if result.completed:
-                        idle_set.add(result.rank)
-                        running_set.remove(result.rank)
-
-                    # Add to the result queue for instant or threaded 
processing.
-                    result_queue.put(result)
-
-            # Process the threaded results.
-            if self.threaded_result_processing:
-                result_queue.run_all()
+        """Process all commands on the queue and wait for completion.
+
+        @param queue:   The command queue.
+        @type queue:    list of Command instances
+        """
+
+        # This must only be run on the master processor.
+        self.assert_on_master()
+
+        running_set = set()
+        idle_set = set([i for i in range(1, self.processor_size()+1)])
+
+        if self.threaded_result_processing:
+            result_queue = Threaded_result_queue(self)
+        else:
+            result_queue = Immediate_result_queue(self)
+
+        while len(queue) != 0:
+
+            while len(idle_set) != 0:
+                if len(queue) != 0:
+                    command = queue.pop()
+                    dest = idle_set.pop()
+                    self.master_queue_command(command=command, dest=dest)
+                    running_set.add(dest)
+                else:
+                    break
+
+            # Loop until the queue of calculations is depleted.
+            while len(running_set) != 0:
+                # Get the result.
+                result = self.master_recieve_result()
+
+                # Debugging print out.
+                if verbosity.level():
+                    print('\nIdle set:    %s' % idle_set)
+                    print('Running set: %s' % running_set)
+
+                # Shift the processor rank to the idle set.
+                if result.completed:
+                    idle_set.add(result.rank)
+                    running_set.remove(result.rank)
+
+                # Add to the result queue for instant or threaded processing.
+                result_queue.put(result)
+
+        # Process the threaded results.
+        if self.threaded_result_processing:
+            result_queue.run_all()
 
 
     #TODO: move up a level




Related Messages


Powered by MHonArc, Updated Wed Mar 21 11:20:01 2012