Pythonのマルチスレッドで同じものを含む順列

import concurrent.futures


def permutations(head, rest):

    if len(rest) == 0:
        return [head]

    else:
        res = []

        # set(集合)型で重複を削除、ソート
        data = sorted(set(rest))

        for i in data:

            #配列の複製
            restx = rest[:]

            #指定データ削除
            restx.remove(i)

            headx = head + [i]
            res += permutations(headx, restx)

        return res


if __name__ == '__main__':

    data = [1, 1, 1, 1, 2, 2, 2, 3, 3, 4]
    data_list = []

    for i in set(data):

        temp = data[:]
        temp.remove(i)

        data_list.append([[i], temp])

    with concurrent.futures.ThreadPoolExecutor(max_workers=4) as executor:

        futures = [
            executor.submit(permutations, head, rest)
            for head, rest in data_list
        ]

        for future in concurrent.futures.as_completed(futures):
            res = future.result()

            print(res)