Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

155
Views
¿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.

about 4 years ago · Santiago Trujillo
1 answers
Answer question

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.

about 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!