Django生成的测试数据非常慢

时间:2015-09-25 12:47:23

标签: python django postgresql test-data

Django 1.8,Postgres 8.4.20

我正在尝试在DB中准备一些性能测试数据 - 生成10万个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核和1 Gb RAM的VPS上,仅需要1小时即可生成4000个具有相应相关条目的用户。

消耗的CPU大约为10%,内存为200mb,负载平均值大约为1.00。

如何加快速度?

1 个答案:

答案 0 :(得分:0)

正如评论中所建议的,我使用了bulk_create并且并行启动了我的脚本10次。这将速度提高到每秒约100个用户条目,这在我的情况下很好。