Задать вопрос

Multiprocessing django?

У меня есть такой цикл:
name = 'something'
for hash, color in hashes:
        ColorHashes.objects.create(name = name , hash = hash, color = color )


Беда в том, что у меня примерно 120 тысяч. объектов нужно создать и процесс пока очень медленный, хочу попробовать сделать многопоточность, как это можно реализовать
  • Вопрос задан
  • 548 просмотров
Подписаться 3 Средний Комментировать
Пригласить эксперта
Ответы на вопрос 2
sergey-gornostaev
@sergey-gornostaev Куратор тега Django
Седой и строгий
Попробуйте bulk_create
CHUNK_SIZE = 10000  # Подберите наиболее подходящий размер экспериментальным образом

def chunkify(items, chunk_size):
    for i in range(0, len(items), chunk_size):
        yield items[i:i+chunk_size]


name = 'something'
for chunk in chunkify(hashes, CHUNK_SIZE):
    color_hashes = [ColorHashes(name=name , hash=hash, color=color) for hash, color in chunk]
    ColorHashes.objects.bulk_create(color_hashes)
Ответ написан
Комментировать
sim3x
@sim3x
Нет
Вам нужно отключить автокоммит в данном блоке кода и допусим через 10к позиций делать коммит в коде

https://docs.djangoproject.com/en/2.2/topics/db/tr...

Или вообще сделать вставку напрямую через СУБД консоль
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы