·
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
動作制作環境動作
- Mac OSX El Capitan
- メモリ 8GB
- Python 2.7.11
上記の環境にて、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
About the author and the blog
Masayuki Ariki is a Hobby Programmer and an not enthusiastic blogger, curious about any Python modules, Deep learning, and the web. More...