30 lines
		
	
	
		
			588 B
		
	
	
	
		
			Python
		
	
	
	
			
		
		
	
	
			30 lines
		
	
	
		
			588 B
		
	
	
	
		
			Python
		
	
	
	
import pickle
 | 
						|
import numpy as np
 | 
						|
 | 
						|
def init():
 | 
						|
    pass
 | 
						|
 | 
						|
def destroy():
 | 
						|
    pass
 | 
						|
 | 
						|
def start():
 | 
						|
    return pickle.dumps(0.0)
 | 
						|
 | 
						|
def finish(buf):
 | 
						|
    return pickle.loads(buf)
 | 
						|
 | 
						|
def reduce(datablock, buf):
 | 
						|
    (rows, cols) = datablock.shape()
 | 
						|
    state = pickle.loads(buf)
 | 
						|
    row = []
 | 
						|
    for i in range(rows):
 | 
						|
        for j in range(cols):
 | 
						|
            cell = datablock.data(i, j)
 | 
						|
            if cell is not None:
 | 
						|
                row.append(datablock.data(i, j))
 | 
						|
    if len(row) > 1:
 | 
						|
        new_state = np.cumsum(row)[-1]
 | 
						|
    else:
 | 
						|
        new_state = state
 | 
						|
    return pickle.dumps(new_state)
 |