A method for executing, on a computer system, graphs expressing computations including: (a) providing at least two graph templates each associated with a different computation graph, each computation graph including a number of graph elements each associated with a corresponding computation; (b) forming at least two pools of processes, each associated with a different type of processing; and (c) processing multiple data streams concurrently, each associated with a different instance of a corresponding computation graph, including for each of the data streams, forming a graph instance from the graph template for the corresponding computation graph, including allocating memory for a runtime data structure for that graph instance and copying the graph template into the allocated memory, wherein each runtime data structure includes a copy of the graph template, a buffer section which holds work elements as work elements are passed between the graph elements and queued prior to processing, and input counts for each graph element initialized to the number of inputs for that graph element, wherein each graph element of the graph instance is associated with a corresponding one of the pools of processes, based on the type of processing associated with each pool of processes, wherein a first graph element is associated with a corresponding first pool of processes and a second graph element is associated with a corresponding second pool of processes, for each graph element of the graph instance, assigning processes from the corresponding one of the pools of processes when at least some part of all of the inputs for the graph element are available according to the initialized input counts, wherein the processes read and write work elements from and to the buffer section of the runtime data structure for the graph instance during processing of the data stream, and processing the data stream with the graph instance, including performing the computations corresponding to the graph elements of such graph instance using the assigned processes; wherein steps (a) and (b) are performed prior to step (c). (a) providing at least two graph templates each associated with a different computation graph, each computation graph including a number of graph elements each associated with a corresponding computation; (b) forming at least two pools of processes, each associated with a different type of processing; and (c) processing multiple data streams concurrently, each associated with a different instance of a corresponding computation graph, including for each of the data streams, forming a graph instance from the graph template for the corresponding computation graph, including allocating memory for a runtime data structure for that graph instance and copying the graph template into the allocated memory, wherein each runtime data structure includes a copy of the graph template, a buffer section which holds work elements as work elements are passed between the graph elements and queued prior to processing, and input counts for each graph element initialized to the number of inputs for that graph element, wherein each graph element of the graph instance is associated with a corresponding one of the pools of processes, based on the type of processing associated with each pool of processes, wherein a first graph element is associated with a corresponding first pool of processes and a second graph element is associated with a corresponding second pool of processes, for each graph element of the graph instance, assigning processes from the corresponding one of the pools of processes when at least some part of all of the inputs for the graph element are available according to the initialized input counts, wherein the processes read and write work elements from and to the buffer section of the runtime data structure for the graph instance during processing of the data stream, and processing the data stream with the graph instance, including performing the computations corresponding to the graph elements of such graph instance using the assigned processes; wherein steps (a) and (b) are performed prior to step (c).