Please Help me understand Map and Lambda in python in this code : I dont understand the purpose of (*p) in this code can someone please help. I am new to this.   

    from multiprocessing.pool import ThreadPool
   
    pool=ThreadPool()
    def mul(x,y):
	    print  x*y

    out=[4,5,6]
    pool.map(lambda p: (lambda i, prediction:
                mul(prediction, i))(*p),
                enumerate(out))