Datos-COVID19 icon indicating copy to clipboard operation
Datos-COVID19 copied to clipboard

Estrategias de optimización de código

Open dna33 opened this issue 3 years ago • 3 comments

Hola, considerando que la audiencia de ese github es experta en procesamiento de datos y que el código de la campaña de vacunas se está demorando bastante (más de 45 minutos cada vez que corre), se me ocurrió que quizás sería una buena idea preguntarles si se les ocurren otimizaciones https://github.com/MinCiencia/Datos-COVID19/blob/master/src/vacunacion.py.

Quedamos atentos a sus sugerencias.

¡Gracias!

dna33 avatar Jan 17 '22 19:01 dna33

Hola @IgnacioAcunaF, tengo implementado un scraper usando matrix para correr en paralelo distintos trabajos A.py, B.py,..., F.py.

  • En mi caso los resultados de cada scraper generaban un archivo nuevo distinto que se subía al repositorio.
  • matrix es una solución muy potente para correr muchos scapers en paralelo (robusta, monitoreable y paralela).
  • Me da la impresión que no tiene problemas de concurrencia.

El código se ve así:

name: main
on:
  schedule:
  - cron: "0 6 * * 4"
  workflow_dispatch:

# A workflow run is made up of one or more jobs that can run sequentially or in parallel
jobs:
  scraper:
     strategy:
        fail-fast: false
        matrix:
           scr: ['A', 'B','C','D','E','F']
     name: ${{ matrix.scr }} 
     runs-on: ubuntu-latest
     steps:
      - name: Checkout repo
        uses: actions/checkout@v2
      # Runs a single command using the runners shell
      - name: Setup Python
        uses: actions/setup-python@v1
        with:
          python-version: "3.7"

      - name: Install Python dependencies
        run: |
            pip install -r requirements.txt
      
      # Runs a set of commands using the runners shell
      - name: Actualizar
        run: |
          git pull
          python3 scrapers/${{ matrix.scr }}.py
      - name: Commit data files
        run: |
          git config --local user.email "[email protected]"
          git config --local user.name "GitHub Action"
          git status
          git reset --hard
          git pull
          git add -A
          git commit -a -m "Added new date" || echo "Nothing to commit"
      - name: Push changes
        continue-on-error: true
        uses: ad-m/github-push-action@master
        with:
          github_token: ${{ secrets.GITHUB_TOKEN }}
          branch: main
          force: true

pescap avatar Aug 23 '22 15:08 pescap

Excelente, muchas gracias @pescap. Lo revisaremos en el contexto de la optimización del proceso de generación de insumos de vacunación. Saludos!

IgnacioAcunaF avatar Aug 23 '22 15:08 IgnacioAcunaF

Ahí también podría ser muy útil: https://github.com/MinCiencia/Datos-CambioClimatico/blob/main/src/actualizar_github.py saludos!

pescap avatar Aug 23 '22 15:08 pescap