Обработка проблем, вызванных условиями гонки при выборке сохраненных данных
Что такое «Условия гонки»?
Состояние гонки — это ситуация, когда задачи, выполняемые асинхронно в одно и то же время, возвращают результаты своего выполнения в порядке времени, необходимого для завершения выполнения каждой из задач.
Как это происходит?
когда задачи выполняются асинхронно, они выполняются параллельно, что означает, что все задачи начинают выполняться примерно в одно и то же время, как показано на диаграмме ниже.
Думайте об этом как о спортсменах на гоночной трассе, отправляющихся на гонку, можно с уверенностью думать, что скорость каждого бегуна отличается от другой на долю, и все они достигнут финиша в разное время в зависимости от их индивидуальных скоростей, что в большинстве случаев непредсказуемо. Точно так же в компьютерном программировании время выполнения не то же самое, и поскольку в асинхронном программировании это функция, которая собирает выходные данные от выполнения задач, думайте об этом как о финишной черте, и поэтому порядок вывода отличается от начального порядка на линии отключения и поэтому в основном непредсказуем.
Как я могу говорить о «условиях гонки»
логически думая об этом, поскольку условия гонки возникают только тогда, когда данные извлекаются в виде кусков. Что, если бы теперь вы могли извлекать их как один большой блок? Решение, например, поместить всех спортсменов в гоночный автомобиль, что-то вроде строкового объекта, а не хранить их в виде блоков, таких как объекты карты или массивы. При таком подходе порядок выполнения контролируется и не меняется от исходного, однако это хорошая идея, когда объекты, хранящиеся в одном фрагменте, невелики, а также следует уделить внимание тому, как вы конвертируете их из большого фрагмента в несколько других фрагментов. Позвольте мне показать вам, как вы можете поддерживать некоторую структуру при изменении форматов в программировании.
Я собираюсь использовать встроенную в Python библиотеку json для перехода от строковых объектов к объектам карты.
сначала импортируйте модуль json
import json
далее мы собираемся перейти от объекта карты к строке, а затем сохранить объект в базах данных, таких как googles firestore
data = {"name":"john doe", "age":13, "location":"West Nile"} dt = json.dumps(data) upload(path="path/to", dt) #now you can upload the dt object to storage and its stored as one chunk
и после извлечения данных из хранилища в виде одного фрагмента мы можем преобразовать их обратно, используя ту же библиотеку json.
#now you can upload the dt object to storage and its stored as one chunk dt = fetch(path="path/to") data = json.loads(dt)
Я думаю, это было полезно. Спасибо, что нашли время, чтобы ознакомиться с моей идеей.