У меня есть длинный код (430 строк), который используется для имитации энергетического рынка в соответствии с конкретными рекомендациями.
Четыре различных процесса: Дом, Рынок, Погода, Внешний.
У каждого процесса есть определенная задача, указанная ниже:
Дом имеет значение с плавающей запятой производства и потребления, торговую политику в виде целого числа и рассчитывает обмены энергией между каждым домом (для моделирования создается несколько домашних процессов).
Рынок рассчитывает текущую цену на энергию на основе производства и потребления и внешних факторов.
Погода определяет случайные переменные температуры и сезона, которые будут использоваться на рынке.
Внешний - это дочерний процесс Маркета, который предоставляет случайные внешние факторы, которые я создал.
У меня есть проблема в моем коде, когда я создаю новый поток для отображения результатов каждого дня моделирования (дни проходят каждые 2 секунды), но я чувствую, что мой код не запускает поток должным образом, и я довольно потеряно относительно того, где проблема происходит точно и почему. Я использовал различную печать ("."), Чтобы показать, куда идет программа, и определить, где ее нет, и я не могу понять, почему поток не запускается должным образом.
Я в Windows, а не в Linux. Если это может быть проблемы, пожалуйста, сообщите мне. Ниже я покажу фрагмент кода того, где проблема, по-видимому, и полный код, а также PDF-файл, объясняющий более подробно, как проект должен выполняться по ссылке на github (430 строк кода не представляется разумным для публикации здесь) .
def terminal(number_of_homes, market_queue, home_counter, clock_ready, energy_exchange_queue, console_connection, console_connection_2):
day = 1
while clock_ready.wait(1.5 * delay):
req1, req2, req3, req4 = ([] for i in range(4))
for i in range(number_of_homes):
a = market_queue.get()
req1.append(a)
req1 = sort(req1)
for i in range(number_of_homes):
a = market_queue.get()
req1.append(a)
req2 = sort(req2)
for i in range(number_of_homes):
a = market_queue.get()
req1.append(a)
req3 = sort(req3)
req1 = req1 + req2 + req3
for i in range(energy_exchange_queue.qsize()):
b = energy_exchange_queue.get()
req4.append(b)
req4 = sort(req4)
thread = threading.Thread(target = console_display, args = (number_of_homes, req1, day, req4, console_connection.recv(), console_connection_2.recv()))
thread.start()
thread.join()
day += 1
Ссылка на Github: https://github.com/MaxMichel2/Energy-Market-Project