队列
(1)简单的队列:
import queue #线程queue q = queue.Queue() q.put('a') q.put('b') q.put('c') q.put('d') q.put('e') print(q.qsize( )) print(q.get()) print(q.qsize( ))
(2)多个进程(主进程和子进程)之间相互传递数据,但是不共享数据:
from multiprocessing import Queue,Process '''多个进程(主进程和子进程)相互传递数据,但是不共享数据''' def f(qq): qq.put('你好') if __name__ == '__main__': q = Queue() p = Process(target=f,args=(q,)) #起一个子进程 p.start() print('>>',q.get()) p.join()

(3)
管道的方式 多个进程(主进程和子进程)之间相互传递数据,但是不共享数据:
from multiprocessing import Process,Pipe #(Pipe() 管道) def child(conn): conn.send('hello world!') conn.send('hello world too!') print('儿子收到父亲来电:',conn.recv()) conn.close() if __name__ == '__main__': father_conn,child_conn = Pipe() #管道有两端,一端父亲一端儿子 father_conn.send('儿砸') p = Process(target=child,args=(child_conn,)) #把儿子传给子进程,父亲是主进程 p.start() print('父亲收到儿子来电:',father_conn.recv()) print('父亲收到儿子来电:',father_conn.recv()) p.join()
(4)多个进程(主进程和子进程)之间真正的数据共享:
from multiprocessing import Process,Manager import os def f(d,l): d[os.getpid()] = os.getpid() #将进程号当作 key 和value传到字典里边 l.append(os.getppid()) print(l) if __name__ == '__main__': with Manager() as manager: d = manager.dict() #生成一个字典,可在多个进程之间贡献 l = manager.list(range(3)) #生成一个列表,事先存有5个元素,可在多个进程间共享 p_list = [] #存放每个进程 for i in range(10): p = Process(target=f,args=(d,l)) #启动子进程 p.start() p_list.append(p) for res in p_list: #等待结果 res.join() print(d) print(l)
(5)进程锁 用法和线程锁基本一样:
from multiprocessing import Process,Lock def f(l,i): l.acquire() print('hello world',i) l.release() if __name__ == '__main__': l = Lock() #进程锁需要将锁传进去 for i in range(10): p = Process(target=f,args=(l,i,)) p.start()
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· dotnet 源代码生成器分析器入门
· ASP.NET Core 模型验证消息的本地化新姿势
· 对象命名为何需要避免'-er'和'-or'后缀
· SQL Server如何跟踪自动统计信息更新?
· AI与.NET技术实操系列:使用Catalyst进行自然语言处理
· dotnet 源代码生成器分析器入门
· 官方的 MCP C# SDK:csharp-sdk
· 一款 .NET 开源、功能强大的远程连接管理工具,支持 RDP、VNC、SSH 等多种主流协议!
· 提示词工程师自白:我如何用一个技巧解放自己的生产力
· 一文搞懂MCP协议与Function Call的区别