Nunca me he visto en la tesitura de tener que usar callbacks porque no son mi guerra. Pero por lo que he oído de la gente que sabe mucho más que yo, son uno de esos infiernos de los que hay que huir con el mismo pavor que de los fors, los ifs, los elses (¡argggg! ¡he escrito else!) y los whiles.
Una pequeña maravilla teórica que me ha hecho replantearme la absoluta inutilidad de aquello que estudié en Álgebra III (funtores y demás) son las mónadas.
Es:
library(future) plan(multiprocess, workers = 4) system.time({ a1 <- future({Sys.sleep(7); 1}) a2 <- future({Sys.sleep(1); 1}) a3 <- future({Sys.sleep(1); 1}) a4 <- future({Sys.sleep(1); 1}) a5 <- future({Sys.sleep(1); 1}) a6 <- future({Sys.sleep(1); 1}) a7 <- future({Sys.sleep(1); 1}) res <- sapply(list(a1, a2, a3, a4, a5, a6, a5), value) }) Piensa antes las posibles opciones:
~8 segundos: ejecuta primero a1-a4 en 7 segundos y luego a5-a7 en un segundo adicional. ~7 segundos: ejecuta primero a1-a4, pero cuando acaban a2-a4, lanza a5-a7, que terminan antes que a1 ¿Otras?
Esta entrada extiende y mejora una homónima de 2014.
El problema de entonces consistía en calcular por separado y en paralelo objetos A, B y C para combinarlos después. Cuando, por supuesto, el cálculo de A, B y C es pesado.
El muy reciente paquete future incorpora a R un mecanismo disponible en otros lenguajes de programación: un cierto tipo de datos, los futuros, que contienen promesas de valores que se calculan fuera del hilo principal del programa.
Tengo una hipoteca. El tipo de interés que pago es el Euribor a 12 meses más un diferencial. He usado una calculadora de hipotecas y he descubierto que si el Euribor sube un 1%, mi cuota (anual, es decir, sumando los incrementos de los 12 meses) se incrementaría en 660 euros.
Y me he preguntado: ¿existe algún producto financiero que me dé dinero si sube el Euribor? ¿Existe alguna manera de protegerme de una subida del índice?