首页 > 系统相关 >python多进程中嵌入多进程注意事项

python多进程中嵌入多进程注意事项

时间:2024-05-16 09:31:13浏览次数:14  
标签:loc 嵌入 ad python Manager p1 进程 共享

例如代码:

from multiprocessing import Pool

p1 = Pool(4)

s = [1,2,3,4]

for i in s:

  p1.apply_asny(某方法,args=(i))

p1.close()

p1.join()

此时,某方法中也有一个多进程设置,这样的话就是双重多进程,只要是传入的参数之间是没有关系的,那么就没有问题。

如果此时,最外层的apply_asny中的方法,是某个类的方法a,而方法a中又调用了方法b,这就会导致子进程和父进程有关联,会报出错误。

同时,对于传入的参数,如果参数存储空间比较小,比如一个int,可以传;而如果实参的存储比较大,比如实参是一个几百万个元素的list,每个进程都要复制一次该参数,就会非常耗时,所以正确做法,应该将存储较大的参数设置为共享变量

from multiprocessing import Manager

# 假设 loc_ad 已经存在且包含数据

loc_ad = {'key1': 'value1', 'key2': 'value2'}

# 使用 Manager 创建共享的字典

manager = Manager()

shared_loc_ad = manager.dict(loc_ad)

# 现在 shared_loc_ad 是一个共享的字典,可以传递给子进程而不用复制,且该共享字典还可以传递到双重进程里。

标签:loc,嵌入,ad,python,Manager,p1,进程,共享
From: https://www.cnblogs.com/chentiao/p/18195300

相关文章

  • 从C#通过代码启动Python脚本没有接收到参数
    本来写的是这样:ProcessStartInfopsi=newProcessStartInfo{FileName="cmd.exe",WorkingDirectory=FrmNewProject.GetFolderPath()+"\\SolverForEXE",RedirectStanda......
  • ModbusRTU从站扫描工具 python实现
    扫描指定串口下,有哪些modbusRTU服务端[1-247]frompymodbus.clientimportModbusSerialClientasModbusClientfrompymodbus.exceptionsimportModbusIOException,ConnectionException,NoSuchSlaveExceptionimporttimedefread_holding_registers(client,slave_addres......
  • ModbusTCP从站(服务端)扫描工具 python实现
    扫描指定IP网络下,有哪些modbusTCP服务端[1-247]frompymodbus.clientimportModbusTcpClientfrompymodbus.exceptionsimportModbusIOException,ConnectionException,NoSuchSlaveExceptionimporttimedefread_holding_registers(client,slave_address):""&quo......
  • python代码上传文件到fastdfs
    Install直接pip安装,需要Python3.10+pipinstallfastdfs-clientInitialclient可以用其他教程的client.conf配置文件的方式,也可以直接传入ip列表进行初始化fromfastdfs_clientimportFastdfsClientclient=FastdfsClient(trackers=('ip1','ip2',...))Uploadbyfil......
  • Python - pyenv, virtualenv, pipenv
    Pyenv可托管多个不同的Python版本。Installpyenv:gitclonehttps://github.com/pyenv/pyenv.git~/.pyenvAdd~/.pyenv/bintoPATH:if[[$(echo$PATH|grep'pyenv'|wc-l)-eq0]];thenPATH=$PATH:~/.pyenv/binfi 查看当前系统上已经安装和正在使用的......
  • Python - 数据库连接池
    目录SQLite自定义连接池使用sqlalchemy创建连接池SQLite自定义连接池importsqlite3fromqueueimportQueueclassSQLiteConnectionPool:def__init__(self,db_path,max_connection=10):self.db_path=db_path#数据库文件路径self.max_c......
  • 【Azure Developer】如何通过Azure Portal快速获取到对应操作的API并转换为Python代码
    问题描述对于Azure资源进行配置操作,门户上可以正常操作。但是想通过Python代码实现,这样可以批量处理。那么在没有SDK的情况下,是否有快速办法呢? 问题解答当然可以,AzurePortal上操作的所有资源都是通过RESTAPI来实现的,所以只要找到正确的API,就可以通过浏览器中抓取到的请求B......
  • python操作redis
    redis安装:https://github.com/tporadowski/redis/releases/一python操作redis1普通链接pipinstallredisimportredisconn=redis.Redis(host="localhost",port=6379,db=0,password=None)conn.set('name','lqz')con......
  • [HDCTF 2023]YamiYami python中的另一种反序列化--yaml
    今天做了到新颖的题,关于python中的yaml反序列化的题目,直接上题吧。发现第一个链接的参数是?url=XXXX,一眼利用点。嗯?直接出了flag,应该是非预期解。再看看有app.py,那就试试。发现app.*被过滤了,二次编码绕过试试。点击查看代码@app.route('/')defindex():session['pas......
  • Python: SunMoonTimeCalculator
     #encoding:utf-8#版权所有2024©涂聚文有限公司#许可信息查看:#描述:https://github.com/Broham/suncalcPy#Author:geovindu,GeovinDu涂聚文.#IDE:PyCharm2023.1python3.11#Datetime:2024/5/1421:59#User:geovindu#Product......