Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >导入要在不同模块中使用的大型模块的最佳方法

导入要在不同模块中使用的大型模块的最佳方法
EN

Software Engineering用户
提问于 2017-01-22 05:16:36
回答 2查看 1.4K关注 0票数 1

我有一个python模块dataProcessor.py,它将大量数据初始化到内存中(大约3GB),我想在同时运行的不同进程中使用这个模块。

但问题是,由于dataProcessor.py将数据加载到每个进程的内存中(每个进程的内存为3GB,因此3个进程的内存总数为9GB ),机器上没有足够的内存同时运行所有的东西。

我尝试使用服务器-客户端模型来初始化数据一次,并为所有进程服务,但是这个模型太慢了。是否有任何方法只加载一次数据并让其他进程访问模块dataProcessor.py中的方法?

我正在讨论的模块是空间性,它是用Cython编写的。数据可以是任何Python对象,并且一旦写入就不会改变。如果解决方案是Python的C扩展,就可以了。

除了共享内存的服务器-客户端或子进程模型之外,还有其他选择吗?

EN

回答 2

Software Engineering用户

发布于 2017-09-01 04:00:35

首先,如果可以的话,将数据初始化放到一个函数中(因此在导入时不会进行初始化)。这有助于测试等。

您可以使用multiprocessing.sharedctypes创建跨多个进程共享的变量,前提是您要分叉到多个进程(而不是创建多个线程)。然后,您可以将这些共享变量传递给分叉进程。

示例:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
from ctypes import c_double
from multiprocessing.sharedctypes import Array, Pool

arr = Array(c_double, 402653184)  # 3 GB array
arr[0] = 1.0
arr[1] = 2.0
...

def fn(in_arr, j):
    print(in_arr[j])

with Pool() as p:
    p.apply_async(fn, (arr, 0))
    p.apply_async(fn, (arr, 1))
    p.apply_async(fn, (arr, 2))
    p.join()
票数 1
EN

Software Engineering用户

发布于 2017-01-23 11:34:52

将模块隐藏在API后面,并作为服务器运行它。实例化实现此API的服务器一次,并使与此模块的所有通信通过API和服务器。您可以使用IPC或直接使用rest,这并不重要。

尽管如此,这并不是解决问题的快速和容易的办法,但它应该做好这项工作。

票数 0
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/340682

复制
相关文章
Python在不同目录下导入模块的方法
python在不同层级目录import模块的方法 使用python进行程序编写时,经常会调用不同目录下的模块及函数。本篇博客针对常见的模块调用讲解导入模块的方法。
李智
2018/08/03
3.1K0
Python导入模块的方法
Python导入模块的方法有两种:import module 和 from module import a,区别是前者所有导入的东西使用时需加上模块名的限定(module.a),而后者不需要。
py3study
2020/01/17
1.6K0
【Python】模块导入 ① ( Python 模块简介 | 模块概念 | 模块作用 | 模块特点 | 常见的 Python 模块 | Python 模块导入 | Python 模块导入语法 )
Python 模块 就是一个以 .py 为后缀的 Python 代码文件 , 在模块中定义有 :
韩曙亮
2023/10/11
2660
【Python】模块导入 ② ( 模块导入语法 | 导入完整模块 | import 导入完整模块 | from 导入完整模块 )
该方法用于 导入完整的模块 , 包括模块中的 函数 / 变量 / 类 / 代码块 等 ;
韩曙亮
2023/10/11
2500
【Python】模块导入 ② ( 模块导入语法 | 导入完整模块 | import 导入完整模块 | from 导入完整模块 )
【Python】模块导入 ③ ( 模块导入语法 | from 导入部分模块功能 | 为导入的模块设置别名 | import 导入模块设置别名 | from 导入模块设置别名 )
在导入模块时 , 有时不需要使用模块的完整功能 , 只需要导入指定的部分功能即可 , 这样也符合最少知识设计原则 ;
韩曙亮
2023/10/11
3200
【Python】模块导入 ③ ( 模块导入语法 | from 导入部分模块功能 | 为导入的模块设置别名 | import 导入模块设置别名 | from 导入模块设置别名 )
模块的导入
假设有两个模块xmlreader.py和csvreader.py,它们都定义了函数read_data(filename):用来从文件中读取一些数据,但采用不同的输入格式。可以编写代码来选择性地挑选读取模块,例如
py3study
2020/01/21
1K0
Python 导入模块中的类
在看代码时发现Python的导入类也可以用“.”的方式,很是惊奇,记录下来: 如以下代码:其所在文件(模块)为test.py
用户7886150
2020/12/24
2.3K0
【Python模块】- 如何导入和使用模块?模块导入方式有哪些?
首先先准备两个模块,md_01_测试模块1和 md_02_测试模块2,然后在demo文件中导入模块并使用工具。
python自学网
2022/10/05
3.3K0
【Python模块】- 如何导入和使用模块?模块导入方式有哪些?
Python模块导入的几种方法
在Python语言的编辑器里,除了默认的内置函数外,其他函数的调用,必须先通过import语句将其导入才能使用。
py3study
2020/01/20
8690
python中如何import不同层级的模块 python中如何import不同层级的模块
main.py为主文件,model.py是我们要引入的文件,则直接import model或from model import *即可。
尾尾部落
2018/09/04
4.8K0
【Python】模块导入 ④ ( 自定义模块 | 制作自定义模块 | 使用 import / from 导入并使用自定义模块中的函数 | 导入自定义模块功能名称冲突问题 )
在另外的文件中 , 导入 my_module 模块 , 然后通过 my_module.add 调用 my_module 模块中的 add 函数 ;
韩曙亮
2023/10/11
7520
【Python】模块导入 ④ ( 自定义模块 | 制作自定义模块 | 使用 import / from 导入并使用自定义模块中的函数 | 导入自定义模块功能名称冲突问题 )
【python】模块导入 || os 模块 || time 模块 || json 模块 || math 模块 || print() 方法 || 文件读写
即:需要导入的模块 brother_test.py,和当前文件 main.py 是同一个文件夹下的情况。
魏言
2025/03/18
1180
python中关于模块导入的模式
举例:只想导入time模块中的ctime、time两个方法,可以按照以下的格式导入:
Java学术趴
2022/07/15
1.6K0
python中关于模块导入的模式
Python模块的导入
在 Python 中,模块是组织代码的重要结构。通过模块,程序员可以更高效地管理大型项目,降低代码的复杂度,提高代码的可读性和可维护性。本文详细讲解了模块的定义及其导入方式。
Heaven645
2024/07/27
1061
Python模块的导入
python中 itertools模块的使用方法
accumulate(iterable: Iterable, func: None, initial:None)
Python学习者
2023/04/08
1.7K0
Python使用模块中对象的几种方法
Python默认安装仅包含部分基本或核心模块,启动时也仅加载了基本模块,在需要时再显式地加载(有些模块可能需要先安装)其他模块,这样可以减小程序运行的压力,且具有很强的可扩展性。Python中导入模块的方法主要有: (1)import 模块名 [as 别名] 使用这种方式导入以后,使用时需要在对象之前加上模块名作为前缀,也就是必须以“模块名.对象名”的方式进行访问。也可以为导入的模块设置一个别名,然后就可以使用“别名.对象名”的方式来使用其中的对象了。 >>> import math >>> math.si
Python小屋屋主
2018/04/16
1.2K0
python中的urllib模块中的方法
urllib.request模块定义了一些打开URLs(一般是HTTP协议)复杂操作像是basic 和摘要模式认证,重定向,cookies等的方法和类。这个模块式模拟文件模块实现的,将本地的文件路径改为远程的url。因此函数返回的是类文件对象(file-like object)
py3study
2020/01/09
2.2K0
Python 模块:创建、导入和使用
有一个内置函数可用于列出模块中的所有函数名称(或变量名称)。这个函数是 dir() 函数:
小万哥
2023/10/29
2090
Python 模块:创建、导入和使用
【Python】模块导入 ⑤ ( 主程序判断语句 | 模块中执行函数问题 | 制作自定义模块并执行函数 | 导入自定义模块会执行模块中的代码 )
执行上述代码 , 结果如下 , 没有调用 my_module 模块中的函数 , 但是该函数还是触发了 ;
韩曙亮
2023/10/11
2200
【Python】模块导入 ⑤ ( 主程序判断语句 | 模块中执行函数问题 | 制作自定义模块并执行函数 | 导入自定义模块会执行模块中的代码 )
python模块导入
[seemmo@RegionServer1 duwen]$ python Python 2.6.6 (r266:84292, Nov 22 2013, 12:16:22) [GCC 4.4.7 20120313 (Red Hat 4.4.7-4)] on linux2 Type "help", "copyright", "credits" or "license" for more information.
py3study
2020/01/14
1.5K0

相似问题

在python模块中导入python模块而不混淆模块名称的最佳方法是什么?

10

寻找实现BFD模块的最佳方法

10

开发/分发专有模块的最佳方法

20

“导入模块”与“从模块导入函数”

80

类与模块-什么时候需要在模块中?

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文