Python efficiency optimization : PROBLEM: given a list consisting of 1 to 50 integers in the range of -1000 to 1000, calculate the maximum product of one or any number of integers within the list given.

My Approach:

import itertools

def answer(xs):
    cur = 1
    dal = []
    for i in range(len(xs), 0, -1):
        for j in itertools.combinations(xs, i):
            for x in j:
                cur *= x
            dal.append(cur)
            cur = 1
    dal.sort(reverse=True)
    return str(dal[0])

Results/What I want to achieve: The results timed out. I want to optimize the structure of the procedure to be as efficient as possible and will need your help. Thanks in advance.