Simple multiprocessing / multithreading
"""
help: https://docs.python.org/2/library/multiprocessing.html#multiprocessing.pool.multiprocessing.Pool.join
"""
''' LIBRARIES '''
import multiprocessing
import sys
''' PARAMETERS '''
# number of task
nt = 2
''' FUNCTIONS '''
def funSquare(num):
return num ** 2
''' BODY '''
if __name__ == '__main__':
# build multiprocessing object
pool = multiprocessing.Pool(processes=nt)
# execute process
largument = range(100)
try:
# map
results = pool.map(funSquare, largument)
# imap return iterator (after is possible transform to list using "list()" )
#results = pool.imap(funSquare, largument)
#print results.next() # prints first
#print results.next() # prints second
#print results.next(timeout=1) # print after 1 second
except Exception,e:
pool.terminate()
sys.exit(str(e))
''' FINISH '''
# when finish task, exit worker
pool.close()
print "--- The End ---"
quit()
import multiprocessing
from functools import partial
from contextlib import contextmanager
@contextmanager
def poolcontext(*args, **kwargs):
pool = multiprocessing.Pool(*args, **kwargs)
yield pool
pool.terminate()
def merge_names(a, b):
return '{} & {}'.format(a, b)
if __name__ == '__main__':
names = ['Brown', 'Wilson', 'Bartlett', 'Rivera', 'Molloy', 'Opie']
with poolcontext(processes=3) as pool:
results = pool.map(partial(merge_names, b='Sons'), names)
print(results)
# Output: ['Brown & Sons', 'Wilson & Sons', 'Bartlett & Sons', ...
import threading
result = dict()
def calc_square(number, result):
print('Square' , number * number)
result['square'] = number * number
def calc_quad(number, result):
print('Quad', number * number * number * number)
result['quad'] = number * number * number * number
if __name__ == "__main__":
number = 7
thread1 = threading.Thread(target=calc_square, args=(number, result, ))
thread2 = threading.Thread(target=calc_quad, args=(number, result, ))
# Will execute both in parallel
thread1.start()
thread2.start()
# Joins threads back to the parent process, which is this
# program
thread1.join()
thread2.join()
# print results
print(result)