scientific_comp_projects/CODE/parallel_computing/functional_programming/fifthL_multiprocessing.py

52 lines
1.2 KiB
Python

from functools import reduce
import multiprocessing
import collections
import os
from pprint import pprint
import itertools
Scientist = collections.namedtuple('Scientist', [
'name',
'field',
'born',
'nobel',
])
scientists = (
Scientist(name='Ada Lovelace', field='math', born=1815, nobel=False),
Scientist(name='Emmy Noether', field='math', born=1882, nobel=False),
Scientist(name='Marie Curie', field='physics', born=1867, nobel=True),
Scientist(name='Tu Youyou', field='chemistry', born=1930, nobel=True),
Scientist(name='Ada Yonath', field='chemistry', born=1939, nobel=True),
Scientist(name='Vera Rubin', field='astronomy', born=1928, nobel=False),
Scientist(name='Sally Ride', field='physics', born=1951, nobel=True),
)
#pprint(scientists)
#print()
import time
def transform(x):
print(f'Processing {os.getpid()} work record {x.name}')
time.sleep(1)
result = {'name': x.name, 'age': 2021 - x.born}
print(f'Done processing {os.getpid()} record {x.name}')
return result
start = time.time()
pool = multiprocessing.Pool()
result = pool.map(transform, scientists)
#result = tuple(map(
# transform,
# scientists
#))
end = time.time()
print(f'Time to complete: {end-start} \n')
pprint(result)