python 实现 多进程 multiprocessing和双向通信multiprocessing.pip

 

import multiprocessing
import timedef worker(conn):# 从管道接收数据data = conn.recv()print(f'Worker received: {data}')# 修改字典(实际上不需要,只是为了演示)并发送回去data['modified'] = Truetime.sleep(10)conn.send(data)conn.close()if __name__ == '__main__':# 创建一个管道parent_conn, child_conn = multiprocessing.Pipe()# 创建一个字典data_to_send = {'key': 'value', 'number': 42}# 创建并启动子进程p = multiprocessing.Process(target=worker, args=(child_conn,))p.start()time.sleep(1)# 通过管道发送数据到子进程
    parent_conn.send(data_to_send)time.sleep(1)# 从管道接收子进程发送回来的数据modified_data = parent_conn.recv()print(f'Main received: {modified_data}')# 关闭管道连接
    parent_conn.close()# 等待子进程完成p.join()

使用 管道 在类和tkinter窗口间传递数据

import tkinter as tk
from tkinter import messagebox
import multiprocessing
import time
class DataProcessor:def __init__(self, conn):self.conn = conndef run(self):while True:# 从管道接收数据data = self.conn.recv()if data is None: # 收到None作为退出信号break# 模拟数据处理processed_data = self._process_data(data)# 通过管道发送处理后的数据 self.conn.send(processed_data)def _process_data(self, data):# 这里简单地模拟数据处理,比如添加一个'processed'键data['processed'] = Truetime.sleep(2) # 模拟耗时操作return datadef main():# 创建管道parent_conn, child_conn = multiprocessing.Pipe()# 创建数据处理进程processor = DataProcessor(child_conn)p = multiprocessing.Process(target=processor.run)p.start()# 创建tkinter主窗口root = tk.Tk()root.title("Data Processor GUI")# 输入框和标签# 处理按钮def on_process():try:# 示例字典数据data = {"name": "Alice","age": 30,"city": "New York","hobbies": ["reading", "swimming", "traveling"]}# 发送数据到处理进程 parent_conn.send(data)# 接收处理后的数据processed_data = parent_conn.recv()messagebox.showinfo("Processed Data", str(processed_data))except Exception as e:messagebox.showerror("Error", f"Failed to process data: {e}")process_button = tk.Button(root, text="Process Data", command=on_process)process_button.pack()# 退出按钮(发送None作为退出信号给处理进程)def on_exit():parent_conn.send(None) # 发送退出信号(这里其实不会直接触发子进程的退出,但可以作为停止处理的标志) p.join() # 等待子进程实际退出(这里应该在子进程中处理退出逻辑) root.quit()exit_button = tk.Button(root, text="Exit", command=on_exit)exit_button.pack()# 运行tkinter主循环 root.mainloop()# 注意:实际上,为了让子进程能够正确退出,我们需要在子进程中添加对None的检查,并在收到None时退出循环。# 在上面的代码中,我们已经发送了None作为退出信号,但子进程中的退出逻辑是通过break语句在while循环中实现的。if __name__ == "__main__":main()

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/887818.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

线性规划 - 对偶

线性规划 - 对偶定义 线性规划是一类满足限制条件为关于自变量的线性约束,且目标函数是关于自变量的线性函数的一类最优化问题。 对于一组自变量 \(x_i\),定义多元线性函数 \(f(x_1,x_2,\dots,x_n)=\sum\limits_{i=1}^na_ix_i\),称 \(f(x_1,x_2,\dots,x_n)\ge/\le/=b_i\) 为…

excel的index和counta函数结合用法解决将a,b列内容合并转到c列

Excel中将a,b列内容合并转到c列 如下图,a,b列各有一些连续的数据(但个数不确定),想要将整个a,b列内容合并转到c列,应该如何实现公式及分步说明 公式实现 =IF(ROW()<=COUNTA(A$1:A$100), A1, IF(ROW()<=COUNTA(A$1:A$100)+COUNTA(B$1:B$100), INDEX(B$1:B$100, ROW()…

1-3 S语言词法分析器设计

一、实验目的 了解词法分析程序的两种设计方法:根据状态转换图直接编程的方式; 利用DFA编写通用的词法分析程序。(选做)二、实验内容 1. 根据状态转换图直接编程 编写一个词法分析程序,它从左到右逐个字符的对源程序进行扫描,产生一个个的单词的二元式,形成二元式(记号…

【技术解读】【CloudSec】EmojiDeploy: Smile! Your Azure web service just got RCEd ._.

目录前言存在漏洞的服务 - Kudu SCM漏洞利用的关键点1、Same-site配置不当2、服务端对Origin的校验可被绕过3、利用一个高危功能接口3.1、DoS - POST /api/scm/clean、POST /api/app/restart3.2、RCE - POST /api/zipdeploy没校验一些自定义请求头 - 如:If-Match: *、X-Reques…

基于扩频解扩+turbo译码的16QAM图传通信系统matlab误码率仿真,扩频参数可设置

1.算法仿真效果 matlab2022a仿真结果如下(完整代码运行后无水印): 仿真操作步骤可参考程序配套的操作视频。2.算法涉及理论知识概要该通信系统主要用于图像传输,适用于对图像质量和传输可靠性要求较高的场景,如无人机图像传输、视频监控、无线电视广播等。在复杂的电磁环境…

【技术学习】【WebSec】GraphQL API vulnerabilities

目录Lab1:Accessing private GraphQL postsLab2:Accidental exposure of private GraphQL fieldsLab3:Finding a hidden GraphQL endpointLab4:Bypassing GraphQL brute force protectionsLab5:Performing CSRF exploits over GraphQLReference Lab1:Accessing private G…

通过MATLAB实现PID控制器,积分分离控制器以及滑模控制器

1.课题概述通过MATLAB实现PID控制器,积分分离控制器以及滑模控制器。通过对比三个算法可知,采用滑模控制算法,其具有最快的收敛性能,较强的鲁棒性,以及较小的超调量。其性能略优于基于积分分离的PID控制器,远优于PID控制器的控制性能。2.系统仿真结果 (完整程序运行后无水…

LDM/SDM

LDM: 把图像VAE进隐空间,Diffusion加噪+UNetCrossAttn去噪,再VAE解码到像素空间输出按照时间t,进行不同程度和类型的去噪,所以加入了time-embedding。 把加入了conditional和未加入conditional的图片线性融合,保证平滑最前面接入resnet,是为了更好地保留中低级特征如边缘…

【漏洞分析】【CTF】Wiz Kubernetes CTF(K8s LAN Party)Writeup

目录入口Challenge 1 - ReconChallenge 2 - Finding NeighboursChallenge 3 - Data Leakage后记Challenge 4 - Bypass BoundariesChallenge 5 - Lateral Movement小结Reference 入口 https://www.k8slanparty.com/ Challenge 1 - Recon这道题的目的是想让你找到隐藏在K8s集群内…

【技术解读】【WebSec】Abusing HTTP hop-by-hop request headers

Abusing HTTP hop-by-hop request headers 这个技术在 2019年入选了 Portswigger 安全社区评选的 top 10 Web hacking techiniques of 2019 的候选名单,尽管最终没有入选 top 10,但个人觉得还是挺有意思的,后来也出现了与之相关的真实世界的漏洞案例,因此值得学习。 什么是…

【漏洞分析】CVE-2024-22243: Spring Framework URL Parsing with Host Validation

漏洞公告漏洞分析 从公告中可知该漏洞关键点在 UriComponentsBuilder 这个类。通过以前的Springboot工程全局搜索可知该类在于spring-web 这个jar包里。于是我们可以diff 下 spring-web 的 5.3.31 和 5.3.32 这两个版本的jar。可以看到,UriComponentsBuilder 类的改动只涉及…

【漏洞分析】CVE-2024-22259: Spring Framework URL Parsing with Host Validation (2nd report)

漏洞公告漏洞分析 这个漏洞本质上跟之前的CVE-2024-22243是同一个问题,且之前官方修复的不完全,导致还是可以被绕过。 这一点,官方在公告里也提到了。 补丁diff下,能看到其实还是url解析的那个正则表达式的修改: //5.3.31的正则: ^(([^:/?#]+):)?(//(([^@/?#]*)@)?(\…