python 进程间数据共享multiProcess.Manger实现解析
作者:Cecilia喜陈 发布时间:2021-03-25 14:06:53
标签:python,进程,数据,共享,multiprocess,manger
一、进程之间的数据共享
展望未来,基于消息传递的并发编程是大势所趋
即便是使用线程,推荐做法也是将程序设计为大量独立的线程集合,通过消息队列交换数据。
这样极大地减少了对使用锁定和其他同步手段的需求,还可以扩展到分布式系统中。
但进程间应该尽量避免通信,即便需要通信,也应该选择进程安全的工具来避免加锁带来的问题。
以后我们会尝试使用数据库来解决现在进程之间的数据共享问题。
1.1 Manager模块介绍
虽然进程间数据独立,但可以通过Manager实现数据共享,事实上Manager的功能远不止于此。
A manager object returned by Manager() controls a server process which holds Python objects and allows other processes to manipulate them using proxies.
A manager returned by Manager() will support types list, dict, Namespace, Lock, RLock, Semaphore, BoundedSemaphore, Condition, Event, Barrier, Queue, Value and Array.
1.2 Manager例子
manager这里可以共享列表,字典等很多数据类型
from multiprocessing import Manager,Process,Lock
def work(d,lock):
lock.acquire()
d['count'] -= 1
lock.release()
if __name__ == '__main__':
lock = Lock()
with Manager() as m:
dic = m.dict({'count':100})#生成一个字典,可在多个进程间共享和传递
p_l = []
for i in range(100):
p = Process(target=work,args=(dic,lock))
p_l.append(p)
p.start()
for p in p_l: #等待结果
p.join()
print(dic)
{'count':0}
来源:https://www.cnblogs.com/xichenHome/p/11569050.html


猜你喜欢
- PHP 301跳转的小代码<?php $the_host = $_SERVER['HTTP
- python 类详解类1.类是一种数据结构,可用于创建实例。(一般情况下,类封装了数据和可用于该数据的方法)2.Python类是可调用的对象
- 一、“无”的哲学佛家讲究“因果报应”,有果必有应。此段看似与主题没有血缘关系,实际讲的是“因”。我个人比较喜欢老子的道家思想,并喜欢以其思想
- 前言NumPy(Numerical Python)是Python的一种开源的数值计算扩展。这种工具可用来存储和处理大型矩阵,比Python自
- Python函数函数就是把具有独立功能的代码块封装成一个小模块,可以直接调用,从而提高代码的编写效率以及重用性, 需要注意的是, 函数需要被
- Python3,开一个线程,间隔1秒把一个递增的数字写入队列,再开一个线程,从队列中取出数字并打印到终端#! /usr/bin/env py
- 数据库系统的安全性包括很多方面。由于很多情况下,数据库服务器容许客户机从网络上连接,因此客户机连接的安全对MySQL数据库安全有很重要的影响
- 一、前言这篇文章,我们将会尝试从零搭建一个简单的新闻搜索引擎当然,一个完整的搜索引擎十分复杂,这里我们只介绍其中最为核心的几个模块分别是数据
- 前言博主参与过大大小小十次数学建模比赛,也获得了不少建模奖项。对于一些小批量样本数据去做预测或者是评估其规律性的话,比较适合的模型一般都是选
- 人脸美白原理人脸美白原理说透了,就是一种图像的颜色空间处理,所以我们需要通过颜色空间进行设计。不过,我们先来参考以下PS对于图像美白的处理步
- python读写excel文件有很多种方法:用xlrd和xlwt进行excel读写用openpyxl进行excel读写用pandas进行ex
- 本文实例总结了Python中字符串的常见操作技巧。分享给大家供大家参考,具体如下:反转一个字符串>>> S = '
- Python程序运行时,打开了多个窗口,使用win32gui模块可以设置指定的某一个窗口为当前活动窗口。import re, timeimp
- 本文实例为大家分享了js实现简易计算器的具体代码,供大家参考,具体内容如下最近,博主闲来无聊,就没事用js写了个简易计算器(博主是搞后端的,
- 先上网卡数据采集脚本,这个基本上是最大的坑,因为一些数据的类型不正确会导致no datapoint的错误,真是令人抓狂,注意其中几个key的
- 前言:由于做项目需要一个树形选择器,项目用的也是element-ui框架,然而它自带的选择器组件没有树形选项,又不想引入其他的框架组件,于是
- 解决方法:先encode再quote。原理:msg.encode('utf-8')是解决中文乱码问题。quote():假如U
- 一、下载git可以官网下载,傻瓜步骤安装就行下载好之后需要在idea中配置git,在File》settings》version Contro
- 主要用到的js代码function getSelectedText(){ &nbs
- 在本文中,将详细介绍Playwright的文本框操作, 包括如何获得文本框的值, 以及向文本框中添加单行和多行文本。田辛老师将用网上的一个测