Ich brauche einige Dummy-Daten im JSON-Format, um sie in einem anderen Projekt zu verwenden. Ich verwende derzeit das Faker
Paket in dem folgenden Code:Python - Generierung von Millionen von JSON-Daten
from json import dumps
from faker import Faker
import collections
database = []
filename = '1M'
length = 1000000
fake = Faker() # <--- Forgot this
for x in range(length):
database.append(collections.OrderedDict([
('last_name', fake.last_name()),
('first_name', fake.first_name()),
('street_address', fake.street_address()),
('email', fake.email())
]))
with open('%s.json' % filename, 'w') as output:
output.write(dumps(database, indent=4))
print "Done."
Dieser Code funktioniert, aber es ist sehr langsam. Ich versuchte PyPy
, und ich war von den Ergebnissen hin und weg. Ich bin derzeit in der Lage, eine JSON-Datei mit 1 Million Daten, die etwa 220 MB ist, in ~ 600 Sekunden zu generieren. Das Problem ist, wenn ich versuche, weiter zu gehen, zum Beispiel 2 Millionen Daten, die ich erwarten würde, dass es in ~ 1200 Sekunden endet, läuft das Skript über diese Zeit hinaus und ich werde von dieser Ausnahme MemoryError
ohne Erklärung warum es begrüßt aufgetreten, ich glaube, es hat etwas mit PYPY_GC_MAX
, aber wieder sollte eine 2M Datei ~ 440mb Gewicht.
Während ich versuche, dieses Problem zu beheben, suche ich immer noch einen Weg, die Generationszeit noch mehr zu drücken. Ich habe versucht, Liste Verständnis, map()
, die Ergebnisse waren die gleichen wie für die Schleife.
Dank
Welchen Python benutzen Sie? –
Python 2.7.12 32bits – Be0wulf
Benötigen Sie ein 'OrderedDict'? Das erhöht wahrscheinlich die Zeit. –