Ich habe versucht, eine pythonischere Methode zu finden, um zufällige Zeichenfolgen in Python zu generieren, die ebenfalls skaliert werden können. Normalerweise sehe ich etwas Ähnliches
''.join(random.choice(string.letters) for i in xrange(len))
Es ist scheiße, wenn Sie eine lange Zeichenfolge generieren möchten.
Ich habe eine Weile über random.getrandombits nachgedacht und herausgefunden, wie man das in ein Array von Bits konvertiert und dann hexadezimal codiert. Mit Python 2.6 bin ich auf das Bitarray-Objekt gestoßen, das nicht dokumentiert ist. Irgendwie habe ich es zum Laufen gebracht und es scheint sehr schnell zu sein.
In nur 3 Sekunden wird auf meinem Notebook eine zufällige Zeichenfolge von 50 mil generiert.
def rand1(leng):
nbits = leng * 6 + 1
bits = random.getrandbits(nbits)
uc = u"%0x" % bits
newlen = int(len(uc) / 2) * 2 # we have to make the string an even length
ba = bytearray.fromhex(uc[:newlen])
return base64.urlsafe_b64encode(str(ba))[:leng]
bearbeiten
heikogerlach wies darauf hin, dass es eine ungerade Anzahl von Zeichen war, die das Problem verursachten. Neuer Code hinzugefügt, um sicherzustellen, dass immer eine gerade Anzahl von Hex-Ziffern von Hex gesendet wird.
Immer noch neugierig, ob es einen besseren Weg gibt, der genauso schnell ist.