Попробуй это. Я думаю, что у него будет меньше памяти, так что, надеюсь, немного быстрее (у меня это заняло ~ 300 с). Вы можете сделать это быстрее, просто передавая данные прямо в файл, нет необходимости использовать Pandas, но я использовал это здесь, когда вы начали с него
import pandas as pd
import numpy as np
import random
import string
from random import choices
from string import ascii_lowercase
size = 50000000
df = pd.DataFrame(np.random.randint(low=0, high=10, size=(size,1)),
columns=['integer1'])
df['String1']= pd.util.testing.rands_array(32, size)
df['String1'] = df['String1'].apply(lambda x: x[0:random.randint(0,32)])
df['String2']= pd.util.testing.rands_array(32, size)
df['String2'] = df['String2'].apply(lambda x: x[0:random.randint(0,32)])
df.head()
Либо просто перейдем прямо к файлу, который будет использовать меньше памяти:
f = open("demofile.txt", "w")
for i in range(0,30000000):
f.write("{},{},{}\n".format(random.randint(0,10), ''.join(choices(ascii_lowercase, k=random.randint(1,32))), ''.join(choices(ascii_lowercase, k=random.randint(1,32)))))
if i % 50000 == 0:
f.flush()
f.close()