threads
- _single_thread
- run_threads
- set_shared_dict_value
- add_shared_dict_value
- get_shared_dict_value
- run_processes
_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
- 1.0.0
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
- 1.0.0
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
- 1.0.0
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
- 1.0.0
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
- 1.0.0
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
- 1.0.0
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.")