Django 生成测试数据非常慢

Django generating test data incredibly slow

Django 1.8,Postgres 8.4.20

我正在尝试在数据库中准备一些性能测试数据 - 生成 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 个内核和 1 Gb RAM 的 VPS 上,只用了 1 小时就生成了 4000 个具有相应相关条目的用户。

消耗的CPU大约是10%,内存200mb,平均负载在1.00左右浮动。

我怎样才能加快速度?

正如评论中所建议的那样,我使用了 bulk_create 并并行启动了我的脚本 10 次。这将速度提高到每秒大约 100 个用户条目,这对我来说很好。