在python中使用多处理进行能源市场模拟

时间:2019-01-12 19:04:25

标签: python-3.x multithreading multiprocessing simulation

我有一个很长的代码(430行),用于遵循特定准则来模拟能源市场。

四个不同的过程:家庭,市场,天气,外部。

每个过程下面都有一个特定的任务:

房屋有一个生产和消费浮动值,一个整数交易策略,并计算每个房屋之间的能量交换(为模拟创建了多个房屋过程)。

市场根据生产和消耗以及外部因素计算当前的能源价格。

天气确定要在Market中使用的温度和季节的随机变量。

外部是Market的子流程,提供了我创建的随机外部因素。

我的代码中有一个问题,我创建了一个新线程来显示模拟每一天的结果(每2秒经过几天),但是我觉得我的代码无法正确启动该线程,我相当确切地知道问题发生在何处以及原因。我已经使用了各种print(“。”)来显示程序在哪里运行,并确定程序不在哪里,而且我看不到为什么线程无法正常启动。

我在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

0 个答案:

没有答案