[Documentation] Explain performance improvements
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 2/5
- Tiempo estimado
- 1-3 horas
- Aptitud para principiantes
- 35/100
- Tipo de issue
- Documentación
- Claridad
- Bastante claro
- Estado de actividad
- Estancado
- Stack tecnológico
- numpy, pandas, python
- Área
- documentation, performance
Línea de trabajo
El issue no especifica ningún archivo de documentación; comienza localizando la documentación existente sobre el uso de SingleNodeExecutor y compárala con los ejemplos de benchmark proporcionados. Documenta la progresión desde la carga repetida de datos hasta la asignación de bloques y la carga basada en init_function, incluidos los resultados de rendimiento y los patrones de uso indicados.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Generate data:
import numpy as np
import pandas as pd
N = 1_000_000
data = pd.DataFrame({
"c": np.random.choice(["a", "b", "c"], size=N),
"x": np.random.uniform(size=N),
"y": np.random.normal(size=N)
})
data.to_csv("blob.csv") # File is about 45 Mb
Slow execution: 24.1 s ± 115 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)
import numpy as np
import pandas as pd
from executorlib import SingleNodeExecutor
def get_sum(i, df):
return i, df["x"].sum(), df["y"].sum()
with SingleNodeExecutor(max_workers=10) as exe:
future_lst = [exe.submit(get_sum, df=pd.read_csv("blob.csv"), i=i) for i in range(100)]
result_lst = [f.result() for f in future_lst]
Reduce the startup time for the processes: 19.5 s ± 31.9 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)
import numpy as np
import pandas as pd
from executorlib import SingleNodeExecutor
def get_sum(i, df):
return i, df["x"].sum(), df["y"].sum()
with SingleNodeExecutor(max_workers=10, block_allocation=True) as exe:
future_lst = [exe.submit(get_sum, df=pd.read_csv("blob.csv"), i=i) for i in range(100)]
result_lst = [f.result() for f in future_lst]
Load the data only once for each process: 946 ms ± 24.3 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)
import numpy as np
import pandas as pd
from executorlib import SingleNodeExecutor
def get_sum(i, df):
return i, df["x"].sum(), df["y"].sum()
def init_funct():
return {"df": pd.read_csv("blob.csv")}
with SingleNodeExecutor(max_workers=10, block_allocation=True, init_function=init_funct) as exe:
future_lst = [exe.submit(get_sum, i=i) for i in range(100)]
result_lst = [f.result() for f in future_lst]
- Lenguaje dominante
- Python
- Estrellas
- 77
- Forks
- 7
- Merge medio
- 10 h 32 min
- PR fusionados (30 d)
- 12
Guía de contribución
No hay ninguna guía de contribución indexada para este repositorio
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de pyiron/executorlib
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
pyiron/executorlib#1054 ·
-
bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
pyiron/executorlib#1032 ·
-
documentation
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
pyiron/executorlib#1005 ·
-
enhancement
Dificultad 5/5 Más de una semana Aptitud para principiantes 35/100
pyiron/executorlib#1049 · 1 comentario ·
-
documentation
Dificultad 3/5 1-2 días Aptitud para principiantes 35/100
pyiron/executorlib#999 · 1 comentario ·
Todos los issues de pyiron/executorlib
Issues similares
-
bug confirmed issue
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
open-webui/open-webui#30750 · 1 comentario ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
-
enhancement
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
OpenwaterHealth/openmotion-bloodflow-app#604 · 1 comentario ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100
-
good first issue
Dificultad 1/5 Menos de una hora Aptitud para principiantes 90/100