Многопроцессорность для цикла - Django - PullRequest
0 голосов
/ 25 июня 2019

У меня очень большой список, скажем, 10000 с, и я пытаюсь проверить, присутствует ли ключ в json, если нет, я должен добавить его.Вот пример кода:

with open('filename', 'rt') as f:
    data_obj = json.loads(f.read())

for item in items:
    try:
        key = data[item.lower()]
        #<my code>
    except Exception as e:
        data = item
        with open('filename', 'w') as outfile:  # have to create a data.json file
             json.dump(data, outfile)

У меня есть 2 проблемы,

  1. Сама итерация занимает столько времени.
  2. Операция записи требует дополнительного времени.

Короче говоря, получение ответа на 900 пунктов списка занимает несколько минут.Я хотел бы использовать многопроцессорность здесь.

Я использую следующий пример кода для его реализации,

def try_multiple_operations(items):
    for item in items:
        try:
            api.my_operation(item)
        except:
            print('error with item')

executor = concurrent.futures.ProcessPoolExecutor(10)
futures = [executor.submit(try_multiple_operations, group) 
           for group in grouper(5, items)]
concurrent.futures.wait(futures)

, но try_multiple_operations принимает только один аргумент, но в моем случае яиметь более 2 аргументов.как я должен использовать многопроцессорность для нужд?

...