代码之家  ›  专栏  ›  技术社区  ›  Max Michel

基于python的多进程能源市场模拟

  •  1
  • Max Michel  · 技术社区  · 6 年前

    我有一个长代码(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

    0 回复  |  直到 6 年前