from multiprocessing import Process, Queue
class Engine:
def __init__(self):
self.info = "Engine Info"
self.order_queue = Queue()
self.orders = []
def get_info(self):
return self.info
def process_orders(self):
while True:
order_info = self.order_queue.get()
if not order_info:
break
strategy_id, order = order_info
self.orders.append((strategy_id, order))
print(f"Engine: Order {order} received from Strategy #{strategy_id}. (Order processed)")
class Strategy(Process):
def __init__(self, engine, queue):
super().__init__()
self.engine = engine
self.queue = queue
def run(self):
while True:
data = self.queue.get()
if not data:
break
self.on_data(data)
def on_data(self, data):
info = self.engine.get_info()
print(f"Strategy: Received data {data}, and info is {info}.")
order = f"Order based on {data}"
self.engine.order_queue.put((self.pid, order))
if __name__ == "__main__":
engine = Engine()
queues = [Queue() for _ in range(3)]
strategies = [Strategy(engine, queue) for queue in queues]
for i in range(5):
for queue in queues:
queue.put(f"Data_{i}")
for queue in queues:
queue.put(None)
order_processor = Process(target=engine.process_orders)
order_processor.start()
for strategy in strategies:
strategy.start()
for strategy in strategies:
strategy.join()
order_processor.join()
print("All strategies and order processor finished.")
print("Orders received by Engine:", engine.orders)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 一文读懂知识蒸馏
· 终于写完轮子一部分:tcp代理 了,记录一下