# Computer scientists love the Fibonacci sequence # [https://en.wikipedia.org/wiki/Fibonacci_sequence], possibly # described by Acharya Pingala in छन्दःशास्त्र (Chhandaḥśāstra). # # The basic definition is that the next item in the sequence # if the sum of the two preceding items, and the two initial # items and 0 and 1. # # We end up with [0, 1, 1, 2, 3, 5, 8, 13, ...] def fibbo(n): match n: case 0 | 1: return n case _: return fibbo(n-1) + fibbo(n-2) # For example: the first few items in the sequence: for n in range(36): print(n, fibbo(n)) # A (nowadays) less commonly used way to construct the mapping # from n to fibbo(n) is to use the map function. # map returns a generator, and we call list to collect the numbers: sequence = list(map(fibbo, range(36))) print(sequence) # To split the work between multiple Python processes, we can # use the multiprocessing module: import multiprocessing pool = multiprocessing.Pool() sequence = pool.map(fibbo, range(36)) print(sequence) # We may use 'with' to clean up the pool after we're done with # the workers: with multiprocessing.Pool(10) as pool: sequence = pool.map(fibbo, range(36)) print(sequence)