Запустить 2 цикла параллельно с зависимыми значениями из 2 разных методов 2 классов

#python #parallel-processing #python-asyncio

#python #параллельная обработка #python-asyncio

Вопрос:

У меня есть 2 класса, метод class1 должен выполнять итерацию с шагом по времени и вычислять значение, зависящее от времени, в то время как метод follow class2 должен регистрировать каждые 10 значений списка истории class1. Как я могу сделать это с помощью asyncio, чтобы оба могли выполняться параллельно, а метод follow для class2 вводил каждые 10 значений во время выполнения метода моделирования?

Это моя попытка

 class Class1:

    def __init__(self,time):
        self.time = time
        self.current_time = 0
        self.history = []

    def get_values(self):
        print('do something with time', self.current_time)
        self.current_time  = 1

    async def run_simulation(self):
        while self.current_time  <= self.time:
            self.get_values()
            self.history.append(self.current_time)

class Class2:
    def __init__(self, class1 ,time_interval = 10):
        self.time_interval = time_interval
        self.class1 = class1


    async def measure(self):
        while self.class1.current_time <= self.class1.time:
            if self.class1.current_time%self.interval == 0:
                print(self.class1.current_time)

object1 = Class1(100)
object2 = Class2(object1,10)
asyncio.run(object1.run_simulation())
asyncio.run(object2.measure())
    
 

У вас есть какие-либо идеи?

Спасибо

Комментарии:

1. Из-за случайного характера процесса обучения, если вы хотите воспроизвести результаты обучения exacts на обеих машинах, вы должны предоставить начальное значение. Здесь вы можете прочитать более подробное объяснение об этом machinelearningmastery.com /…

2. Вы имеете в виду is one order of magnitude below than on PC2 ?

3. Использование одной и той же предварительно обученной модели является обязательным для вашей цели, но вам также необходимо убедиться, что на обеих машинах все вычисления выполняются в одном и том же порядке. Из-за всех задействованных случайных вычислений вам необходимо предоставить seed

4. Единственное различие, которое я вижу, заключается в том, что для сходимости требуется более низкая скорость обучения. Не могли бы вы упомянуть другие способы, которыми результаты отличаются? Кроме того, вы пробовали использовать одну и ту же версию tensorflow на обеих машинах?

5. Вы можете попробовать использовать tf.random.set_seed() и np.random.seed() в обеих системах с одинаковым начальным номером и проверить, отличаются ли результаты.