· python

大量の重複しないIDを生成する方法

uuidモジュールを使用

大量の重複しないIDを生成する必要があり、pythonでuuidモジュールを使って作成しました。

random_id_generate.py

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import sys
import uuid

argv = sys.argv

with open('list.txt', mode = 'a') as fh:
    for x in range(int(argv[1])):
        fh.write(str(uuid.uuid4())+"\n")

使い方

S ./random_id_generate.py 100
生成したい件数を引数で渡すと、同階層にある
list.txtにIDを記録します

生成されたID

ea46ed1c-9eb4-4e76-99ff-95a040daefac
ec1a6c64-e1a9-4ebe-9a72-8b1cab8059f9
b7281fe7-8606-4a06-8236-51dfa73f8366
4b9edb80-e0f0-4d54-8eb7-53f7cec8e758
5c416197-736c-4a5e-b018-ff0f28025964

動作制作環境動作

上記の環境にて、150万のIDを約30秒で生成

shortuuidモジュールを使用

uuidモジュールを使うと、生成されるIDが長いので、短いIDを制作するために、shortuuidモジュールを使ってみました。

random_id_generate_short.py

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import sys
import shortuuid

argv = sys.argv

with open('list_short.txt', mode = 'a') as fh:
    for x in range(int(argv[1])):
        fh.write(str(shortuuid.uuid())+"\n")

生成されたID

aa7dUkQxezFAKbL3LDjRFi
bStaGc9JBe8pnSFf4Suhxe
jB6reqypzBun9edb6dJuQf
9rg5nVp5JXrKE5wVSD3mjb
Tu7dUuYx4gpZmHvGcBa44T

数字だけの重複しないIDを生成するバージョンも作ってみました。

random_id_generate_int_only.py

#!/usr/bin/env python
#-*- coding:utf8 -*-
import random

with open('list_int.txt', mode = 'a') as fh:
    for x in random.sample(xrange(10**13,10**14-1),15*100000):
        fh.write(str(x)+"\n")

生成されたID

61767622238267
66897014686910
46554447403332
45406664575959
87298412556304
  • LinkedIn
  • Tumblr
  • Reddit
  • Google+
  • Pinterest
  • Pocket