#!/usr/bin/env python

import multiprocessing 
import os # For reading the amount of CPUs requested. 
import time # For clocking the calculation. 

def double(data):
    return data ** 2

if __name__ == '__main__':
    begin = time.time()
    inputs = list(range(10000)) # Makes an array from 0 to 10
    poolSize = int(os.environ['SLURM_JOB_CPUS_PER_NODE']) # Amount of CPUs requested.
    pool = multiprocessing.Pool(processes=poolSize,)
    poolResults = pool.map(double, inputs) # Do the calculation.
    pool.close() # Stop pool accordingly.
    pool.join()  # Wrap up data from the workers in the pool.
    print ('Pool output:', poolResults) # Results.
    elapsedTime = time.time() - begin
    print ('Time elapsed for ' , poolSize, ' workers: ', elapsedTime, ' seconds')
