首页 > 系统相关 >python 多进程交互

python 多进程交互

时间:2024-02-21 17:00:13浏览次数:27  
标签:info __ python self engine queue 进程 交互 order

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):  # 示例推送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)

标签:info,__,python,self,engine,queue,进程,交互,order
From: https://www.cnblogs.com/mxnote/p/18025670

相关文章

  • Python启动其他程序
    通过python脚本来启动其他的程序,一般使用subprocessimportsubprocess#启动Windows上的计算机程序subprocess.Popen('C:\\Windows\\System32\\calc.exe')#启动记事本,并打开text.txt文件,在该列表中第一个元素表示程序名称,后面的都是参数subprocess.Popen(['C:\\Windows......
  • python2 解决 unicode转中文问题
    importjson#避免\x0e问题importsysreload(sys)sys.setdefaultencoding('utf-8')#defbbb():#bbb={u"111":u"\u73bb\u7483"}printbbbprint(json.dumps(bbb).decode("unicode-escape"))de......
  • Python 机器学习工具 scikit-learn 的入门使用
    参考文档:https://www.scikitlearn.com.cn/通过对已有多组数据的训练,从而实现对单个数据的结果预测安装pipinstall-Uscikit-learnDemo通过使用sklearn包中的决策树DecisionTreeclassifier算法实现简单预测importsklearnfromsklearnimporttreefeature=[[178,1],......
  • python 播放 yuv
    mp4toyuvffmpeg-ivideo1.mp4video1.yuv使用python直接播放yuvimportcv2importnumpyasnpdefplay_yuv(file_path,width,height):yuv_file=open(file_path,'rb')frame_size=int(width*height*3/2)whileTrue:frame_......
  • python实战:用requests+json抓取接口
    一,安装requests1,用pip安装(venv)liuhongdi@192news%pip3installrequests2,查看所安装库的版本:(venv)liuhongdi@192news%pip3showrequestsName:requestsVersion:2.31.0Summary:PythonHTTPforHumans.Home-page:https://requests.readthedocs.ioAu......
  • Python数据结构与算法05——插入排序 shell排序
    插入排序 definsrt_sort(aimlist):n=len(aimlist)forcurinrange(1,n):i=curwhilei>0:ifaimlist[i]<aimlist[i-1]:aimlist[i],aimlist[i-1]=aimlist[i-1],aimlist[i]i-=1e......
  • 当systemd停止父python脚本时,子进程退出
    KillMode参数contorl-group(默认)#当前控制组里所有的子进程都会被杀掉process:#只杀主进程mixed:#主进程将收到SIGTERM(终止进程)信号,子进程将收到SIGKILL(无条件终止)信号none:  #没有进程会被杀掉,只是执行服务的stop命令 解决办法将KillMode改成process或non......
  • 使用python进行自动化备份和部署
    1、代码文件deploy.pyimportosfromdatetimeimportdatetimeimportshutilimportsysimportwin32serviceutilimportwin32serviceimporttimeimporttkinterastk#fromtkinterimportfiledialogimportconfigparserimportloggingimportctypes#创建......
  • python更换国内镜像
    永久更改1.在python的命令提示符中运行以下语句,该条语句将pip的下载源永久更改为某个镜像站,这里以清华大学开源镜像站为例:pipconfigsetglobal.index-urlhttps://pypi.tuna.tsinghua.edu.cn/simple/2.windows环境下,在用户目录中创建一个文件夹,该文件夹的命名为pip;在该pip......
  • Python数据结构与算法04——栈与队列
    栈的实现:classStack(object):def__init__(self):self.__list=[]defpush(self,item):self.__list.append(item)defpop(self):returnself.__list.pop()defpeek(self):ifself.__list:returnself._......