我有一段代码不断创建类 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
相关分类