Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

163
Visualizações
¿Cómo mejorar el rendimiento de la conversión de datos al formato json?

Tengo el siguiente código para convertir datos (datos de fila de postgress) a json. Usualmente len(data) = 100 000

 def convert_to_json(self, data): s3 = self.session.client('s3') infos = { 'videos':[], 'total_count': len(data) } for row in data: video_id = row[0] url = s3.generate_presigned_url( ClientMethod='get_object', Params={ 'Bucket': '...', 'Key': '{}.mp4'.format(video_id) } ) dictionary = { 'id': video_id, 'location': row[1], 'src': url } infos['videos'].append(dictionary) return json.dumps(infos)

Gracias por cualquier idea.

over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

La mayor parte del tiempo en su programa probablemente se desperdicia esperando a la red. De hecho, llama a s3.generate_presigned_url , que enviará una solicitud a Amazon y luego tendrá que esperar hasta que el servidor finalmente responda. Mientras tanto, no hay mucho procesamiento que pueda hacer.

Entonces, el mayor potencial es acelerar el proceso haciendo solicitudes en paralelo . Entonces, envía, por ejemplo, 10 solicitudes y luego espera las 10 respuestas. Este artículo ofrece una breve introducción al respecto.

Según su pregunta y el artículo, puede usar algo como lo siguiente para acelerar el proceso:

 from multiprocessing.pool import ThreadPool # ... def fetch_generate_presigned_url(video_id) : return s3.generate_presigned_url( ClientMethod='get_object', Params={ 'Bucket': '...', 'Key': '{}.mp4'.format( video_id ) } ) def convert_to_json(self, data): pool = ThreadPool(processes=10) urls = [row[0] for row in data] video_ids = pool.map( fetch_generate_presigned_url ,urls) infos = { 'videos':[{'id': video_id,'location': row[1],'src': row[0]} for vide_id,row in zip(video_ids,data) ], 'total_count': len(data) } return json.dumps(infos)

El número de procesos, process=10 se puede establecer más alto para que las solicitudes sean más paralelas.

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda