Как я могу ускорить это "для" l oop? - PullRequest
0 голосов
/ 27 апреля 2020

Я написал небольшой фрагмент кода в Python, где я получаю данные с сервера для N элементов в массиве. Я передаю данные с Laravel контроллера на python. Вот мой python код:

import requests
import sys
import json

def jsontoarray(json_data):
  result = list()
  data= json.loads(json_data)
  for d in data:
    response = requests.get('myUrl/readData?name=' + d)
    result.append(response.content)
    print(result)
jsontoarray(sys.argv[1])

И мой Laravel контроллер:

public function data(Request $request){
  $process = new Process(['python', $scriptPath, json_encode($request->data)]);
  $process->run();
  $process->getOutput();
}

Однако это слишком медленно, если в массиве имеется большое количество элементов, над которыми Я зацикливаюсь. Как я могу ускорить это?

1 Ответ

0 голосов
/ 27 апреля 2020

Как сказал Мартино, вы можете использовать многопоточность для ускорения вашей программы. Просто импортируйте библиотеку «Threading» и добавьте threding.Thread в скобках вашего класса и назовите вашу функцию «def run (self):», затем поместите все, что вам нравится, чтобы ваш поток делал внутри этой функции, и везде, где вы хотите запустить свой поток, используйте ваш имя объекта и затем ".start ()", таким образом, он запустит ваш поток. В большинстве случаев это не очень хорошая идея, но если вам нужно, вы должны это сделать. Кстати, если ваша программа больше связана с вводом / выводом (входом и выходом), то лучше использовать потоки, если она связана с процессором, лучше использовать многопроцессорность. Вы также можете посмотреть эти учебники для лучшего понимания:

Учебники по потокам:

https://www.youtube.com/watch?v=WaXK8G1hb_Q

https://www.youtube.com/watch?v=IEEhzQoKtQU

Мульти-обработка: https://www.youtube.com/watch?v=fKl2JW_qrso

Надеюсь, это помогло вам!

...