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
_______________________________________________
relax (http://nmr-relax.com)
This is the relax-commits mailing list
[email protected]
To unsubscribe from this list, get a password
reminder, or change your subscription options,
visit the list information page at
https://mail.gna.org/listinfo/relax-commits