# coding: utf8
from __future__ import unicode_literals
import logging
from backoffice.models import *
from backoffice.BlockchainTaskManager import BlockchainTasksManager
from concurrent.futures import ThreadPoolExecutor
import time 

tasks_manager = BlockchainTasksManager(num_threads=5)
# Function to call execute_tasks
def call_execute(tasks):
    return tasks_manager.execute_tasks(tasks)

def run():
    #Init task 
   # Create list of sample tasks
    tasks_list = [[] for _ in range(10)]
    for i in range(10):
        for j in range(5):
            tasks_list[i].append(f"Task {i}-{j}")

    start = time.time()
    
    # Create a thread pool with 5 threads 
    with ThreadPoolExecutor(max_workers=10) as executor:
        futures = [executor.submit(call_execute, tasks) for tasks in tasks_list]
        results = [f.result() for f in futures]
    
    end = time.time()
    print(f"Finished 10 parallel calls in {end - start} seconds")
    # Print results
    for result in results:
        print(result)