threads

_single_thread

 

Descripción

Sólo para uso interno: Ejecuta una función dada en un hilo.

Parámetros

Nombre  Tipo Requerido Descripción
q None Si Una cola de la que obtener parámetros para la función
function callable Si La función a ejecutar en el hilo
errors list No Una lista para almacenar cualquier error encontrado durante la ejecución

Versión

run_threads

Descripción

Ejecutar una función dada para una lista de elementos dada en un número dado de hilos

Parámetros

Nombre Tipo Requerido Descripción
max_threads
int SI Número de hilos 
function callable Si Función a ejecutar
items list Si Lista con los items que se asignaran a cada hilo
print_errors
bool No Para pintar error por salida

Return 

bool Devuelve True si no ha habido errores en la ejecución y 0 de suceder lo contrario.

Versión

Ejemplo

import pandoraPlugintools as pt

# Define a function to be executed in each thread
def process_item(item):
    # Perform some processing on the item
    print(f"Processing item: {item}")

# List of items to process
items = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

# Number of threads to use
max_threads = 3

# Run the function for each item using multiple threads
success = pt.run_threads(max_threads=max_threads, function=process_item, items=items, print_errors=True)

if success:
    print("All threads executed successfully.")
else:
    print("Errors occurred during thread execution.")

set_shared_dict_value

Descripción

Establece un valor para una clave en el diccionario interno compartido. Esta función es utilizada por todos los procesos paralelos.

Parámetros

Nombre Tipo Requerido Descripción
key str SI La clave en el diccionario compartido
value None Si El valor a asignar a la clave

Return 

Tipo
None

Versión

Ejemplo

import pandoraPlugintools as pt

# Define a function to be executed by parallel processes
def process_data(item):
    # Process the data and set a value in the shared dictionary
    result = item * 2
    pt.set_shared_dict_value(key=str(item), value=result)

# List of items to process
data_list = [1, 2, 3, 4, 5]

# Create a shared dictionary and lock for synchronization
shared_dict = multiprocessing.Manager().dict()
shared_dict_lock = multiprocessing.Manager().Lock()

# Set the shared dictionary and lock in the module
pt._SHARED_DICT = shared_dict
pt._SHARED_DICT_LOCK = shared_dict_lock

# Number of parallel processes to use
num_processes = 2

# Run the function for each item using parallel processes
success = pt.run_parallel(num_processes=num_processes, function=process_data, data_list=data_list, print_errors=True)

if success:
    print("All processes executed successfully.")
else:
    print("Errors occurred during process execution.")

add_shared_dict_value

Descripción

Añade un valor a una clave del diccionario interno compartido. Esta función es utilizada por todos los procesos paralelos.

Parámetros

Nombre Tipo Requerido Descripción
key str Si La clave en el diccionario compartido
value None SI El valor a añadir a la clave

Return 

Tipo
None

Versión

Ejemplo

import pandoraPlugintools as pt

# Define a function to be executed by parallel processes
def process_data(item):
    # Process the data and add a value to the shared dictionary
    result = item * 2
    pt.add_shared_dict_value(key=str(item), value=result)

# List of items to process
data_list = [1, 2, 3, 4, 5]

# Create a shared dictionary and lock for synchronization
shared_dict = multiprocessing.Manager().dict()
shared_dict_lock = multiprocessing.Manager().Lock()

# Set the shared dictionary and lock in the module
pt._SHARED_DICT = shared_dict
pt._SHARED_DICT_LOCK = shared_dict_lock

# Number of parallel processes to use
num_processes = 2

# Run the function for each item using parallel processes
success = pt.run_parallel(num_processes=num_processes, function=process_data, data_list=data_list, print_errors=True)

if success:
    print("All processes executed successfully.")
else:
    print("Errors occurred during process execution.")
In this example, the process_data function processes each item and adds a value to the shared dictionary using the add_shared_dict_value function. The run_parallel function is used to execute the process_data function in parallel processes for the given list of items. The shared dictionary and lock are created using the multiprocessing.Manager() and then assigned to the corresponding module variables _SHARED_DICT and _SHARED_DICT_LOCK in the pandoraPluginTools module.





get_shared_dict_value

Descripción

Obtener el valor de una clave en el diccionario interno compartido. Esta función es utilizada por todos los procesos paralelos.

Parámetros

Nombre Tipo Requerido Descripción
key str Si La clave en el diccionario compartido

Return 

Tipo
None

Versión

Ejemplo

import pandoraPlugintools as pt

# Define a function to be executed by parallel processes
def process_data(item):
    # Process the data and get the value from the shared dictionary
    result = item * 2
    value = pt.get_shared_dict_value(key=str(item))
    print(f"Item: {item}, Processed Value: {result}, Shared Value: {value}")

# List of items to process
data_list = [1, 2, 3, 4, 5]

# Create a shared dictionary and lock for synchronization
shared_dict = multiprocessing.Manager().dict()
shared_dict_lock = multiprocessing.Manager().Lock()

# Set the shared dictionary and lock in the module
pt._SHARED_DICT = shared_dict
pt._SHARED_DICT_LOCK = shared_dict_lock

# Number of parallel processes to use
num_processes = 2

# Run the function for each item using parallel processes
success = pt.run_parallel(num_processes=num_processes, function=process_data, data_list=data_list, print_errors=True)

if success:
    print("All processes executed successfully.")
else:
    print("Errors occurred during process execution.")

run_processes

Descripción

Ejecuta una función dada para una lista de elementos dada en un número dado de procesos

Parámetros

Nombre Tipo Requerido Descripción
max_processes
int Si El número máximo de procesos a ejecutar en paralelo
function
callable SI La función a ejecutar para cada ítem
items
list Si Lista de ítems a procesar
print_errors
bool No Si se van a imprimir los errores

Return 

Tipo Descripción
bool True si todos los procesos se completaron con éxito, False en caso contrario

Versión

import pandoraPlugintools as pt

# Define a function to be executed by parallel processes
def process_data(item):
    result = item * 2
    print(f"Item: {item}, Processed Value: {result}")

# List of items to process
data_list = [1, 2, 3, 4, 5]

# Number of parallel processes to use
num_processes = 2

# Run the function for each item using parallel processes
success = pt.run_processes(max_processes=num_processes, function=process_data, items=data_list, print_errors=True)

if success:
    print("All processes completed successfully.")
else:
    print("Errors occurred during process execution.")