簡體   English   中英

如何使用 Django 管理命令進行多處理?

[英]How to do multiprocessing with a Django management command?

我有一個 Django 管理命令,我可以這樣運行:“python manage.py updateprices”並執行以下查詢:

activos = SearchTag.objects.filter(is_active=True)

我想同時將這樣的命令拆分到我的數據庫的較小塊上, eg activos[0:2000] ,所以我加快了進程

我怎樣才能做到這一點?

如果我理解正確,我認為您正在談論按組進行數據庫查詢。

所以首先,你應該創建一個列表(可迭代)

q_list = []
active_q = SearchTag.objects.filter(is_active=True)
# start from 0 and make jumps of 2,000. so if you have 20,000 rows you would have a list containing 10 querysets of 2000 rows each
for i in range(0, active_q.count(), 2000):
    q_list.append(active_q[i:i+2000])

現在您有了要對其進行操作的項目列表,您可以輕松地將其傳遞給池

from multiprocessing import cpu_count, Pool
pool = Pool(processes=cpu_count())
pool.map(function_on_each_q, q_list)

顯然你需要創建 function 來做你想做的任何事情:

def function_on_each_q(q_list):
    # DO WHATEVER WITH q_list

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM