У меня есть файл .odb с именем plate2.odb, из которого я хочу извлечь данные о деформации. Для этого я создал приведенный ниже простой код, который перебирает вывод поля E (деформация) для каждого элемента и сохраняет его в списке.
from odbAccess import openOdb
import pickle as pickle
# import database
odbname = 'plate2'
path = './'
myodbpath = path + odbname + '.odb'
odb = openOdb(myodbpath)
# load the strain values into a list
E = []
for i in range(1000):
E.append(odb.steps['Step-1'].frames[0].fieldOutputs['E'].values[i].data)
# save the data
with open("mises.pickle", "wb") as input_file:
pickle.dump(E, input_file)
odb.close()
Проблема заключается в том, что цикл for, который загружает значения деформации в список, занимает много времени (35 секунд для 1000 элементов). При такой скорости (0,035 запросов в секунду) мне потребовалось бы 2 часа, чтобы извлечь данные для моей модели с 200 000 элементов. Почему это так долго? Как я могу ускорить это?
Если я выполняю один запрос на растяжение вне любого цикла Python, это занимает 0,04 секунды, поэтому я знаю, что это не проблема с циклом Python.