2015-09-25 28 views
3

的Django 1.8,Postgres的20年4月8日Django的生成測試數據慢得令人難以置信

我想準備在DB一些性能測試數據 - 產生100個000 Django的用戶以及其他模型實例。這裏是我的代碼:

for n in range(100000): 
    # Generate User with one related Profile 
    user = User.objects.create(username=str(random.random())) 
    UserProfile.objects.create(custom_id=str(random.random()), user=user) 

    # For each User generate a Journey with 10 related Visits 
    journey = Journey.objects.create(user_id=user.id) 
    for i in range(10): 
     journey.visit_set.add(Visit(custom_id=str(random.random()))) 

    # Also for each User generate a Progress with 100 related Challenges 
    progress = Progress.objects.create(user_id=user.id) 
    for j in range(100): 
     progress.challenge_set.add(Challenge(custom_id=str(random.random()))) 

它按預期工作,唯一的問題是,它是令人難以置信的慢。在具有1核心和1Gb RAM的VPS上,花費1個小時才能生成具有相應相關條目的4000個用戶。

消耗的CPU大約是10%,內存200mb,負載平均浮動在1.00左右。

如何加快速度?

+1

嘗試使用['bulk_create'](https://docs.djangoproject.com/en/1.8/ref/models/querysets/#bulk-create)。 –

+0

DB與Django在同一臺服務器上?你可以嘗試在範圍內(10000)並行運行腳本10次並行 – Foon

+0

好的謝謝。但爲什麼現在這麼慢?對於填充數據庫的單個django腳本有沒有限制? –

回答

0

正如評論中所建議的那樣,我使用了bulk_create並且並行啓動了我的腳本10次。這增加了每秒約100個用戶輸入的速度,在我的情況下這很好。

相關問題