Python - 如何从打印信息的单独进程实时读取类实例

我有一段代码不断创建类 Car 的新实例。这样做时,类 Car 正在创建它自己的实例列表,因此当我想获取当前实例的信息时,我可以轻松地这样做,如下面的代码所示:


from multiprocessing import Process

import time

class Car:


    car_list = list()

    def __init__(self, id, model):

        self.id = id

        self.model = model

        Car.car_list.append(self)


    @classmethod

    def get_current_instances(cls):

        return Car.car_list



class Interface:


    def print_current_system(self):

        while True:

            print(len(Car.get_current_instances()))

            time.sleep(1)




if __name__ == "__main__":


    interface = Interface()

    model = ["Toyota", "BMW"]


    [Car(i, model[i]) for i in range(len(model))]


    print_process = Process(target=interface.print_current_system)

    print_process.start()


    Car(2345, "Tesla")

    print("from main process " + str(len(Car.get_current_instances()))) 

出于问题的目的,此代码已简化。但是,问题仍然存在。我正在从新进程调用函数 print_current_system。此函数不断查看 Car 的所有当前实例并打印汽车数量。


当我开始这个进程,然后,然后添加一些新的 Car 实例时,这些实例对另一个子进程是隐藏的,而对主进程是完全可见的。我很确定我需要使用队列或管道之类的东西。但是,我不确定如何。这是上面代码的输出:


2

from main process 3

2

2

2

2

2


翻阅古今
浏览 149回答 2
2回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python