Каждый раз, когда я смотрю на проблемы производительности, я думаю, что лучшая вещь сделать время, сколько времени Ваши страницы берут, чтобы работать, и затем посмотреть на самые медленные. Когда Вы получаете эти реальные метрики, можно часто улучшать производительность относительно самых медленных порядками величины, или путем фиксации медленного SQL-запроса или возможно закручивания кода немного.
Это, конечно, не требует никаких новых аппаратных средств или специального программного обеспечения, просто критический взгляд на существующем коде.
Однако это будет только работать так долго..., если Вы действительно заставите достаточно трафика поражать пределы Ваших аппаратных средств, и/или существует некоторый код, который является просто по сути медленным и действительно необходимым, необходимо будет посмотреть на другие возможности.
Возможно, вам понадобятся функции UUID Python:
21.15. uuid - объекты UUID согласно RFC 4122
например:
import uuid
print uuid.uuid4()
7d529dd4-548b-4258-aa8e-23e34dc8d43d
unique и random исключают друг друга. возможно, вы этого хотите?
import random
def uniqueid():
seed = random.getrandbits(32)
while True:
yield seed
seed += 1
Использование:
unique_sequence = uniqueid()
id1 = next(unique_sequence)
id2 = next(unique_sequence)
id3 = next(unique_sequence)
ids = list(itertools.islice(unique_sequence, 1000))
нет двух одинаковых возвращаемых идентификаторов (Уникальных), и это основано на рандомизированном начальном значении
Возможно uuid.uuid4 ()
может сделать эту работу. См. uuid для получения дополнительной информации.
import time
import random
import socket
import hashlib
def guid( *args ):
"""
Generates a universally unique ID.
Any arguments only create more randomness.
"""
t = long( time.time() * 1000 )
r = long( random.random()*100000000000000000L )
try:
a = socket.gethostbyname( socket.gethostname() )
except:
# if we can't get a network address, just imagine one
a = random.random()*100000000000000000L
data = str(t)+' '+str(r)+' '+str(a)+' '+str(args)
data = hashlib.md5(data).hexdigest()
return data
import time
def new_id():
time.sleep(0.000001)
return time.time()
В моей системе time.time (), кажется, предлагает 6 значащих цифр после десятичной точки. При кратковременном сне он должен быть гарантированно уникальным с хотя бы умеренным количеством случайности в последних двух или трех цифрах.
Вы также можете хэшировать его, если беспокоитесь.