草庐IT

memory_pools

全部标签

Python 多处理 pool.map 引发 IndexError

我已经使用python/cython开发了一个实用程序,可以对CSV文件进行排序并为客户端生成统计信息,但是调用pool.map似乎会在我的映射函数有机会执行之前引发异常。对少量文件进行排序似乎按预期运行,但随着文件数量增加到10,我在调用pool.map后得到以下IndexError。有没有人碰巧认识到以下错误?非常感谢任何帮助。虽然代码处于NDA之下,但用例非常简单:代码示例:defsort_files(csv_files):pool_size=multiprocessing.cpu_count()pool=multiprocessing.Pool(processes=pool_s

python 素数处理 : processing pool is slower?

所以最近几天我一直在摆弄python的多处理库,我真的很喜欢处理池。它很容易实现,我可以想象出很多用途。我已经完成了几个我以前听说过的项目来熟悉它,最近完成了一个暴力破解刽子手游戏的程序。任何人,我正在做一个执行时间比较,对单线程和处理池中100万到200万之间的所有素数求和。现在,对于hangmancruncher来说,将游戏放在处理池中可以将执行时间提高大约8倍(i7具有8个内核),但是当磨掉这些素数时,它实际上增加处理时间几乎是4倍。谁能告诉我这是为什么?这是供有兴趣查看或测试它的任何人使用的代码:#!/user/bin/python.exeimportmathfrommulti

python - netcdf4-python : memory increasing with numerous calls to slice data from netcdf object

我正在尝试使用netcdf4-python从netcdf4文件中读取数据切片。这是第一次使用python,我遇到了内存问题。下面是代码的简化版本。在循环的每次迭代中,内存跳转相当于我读取的数据片。如何在遍历每个变量时清理内存?#!/usr/bin/envpythonfromnetCDF4importDatasetimportosimportsysimportpsutilprocess=psutil.Process(os.getpid())defprint_memory_usage():nr_mbytes=process.get_memory_info()[0]/1048576.0sys

python - low_memory 和 memory_map 标志在 pd.read_csv 中做什么

pandas.read_csv的函数签名提供以下选项:read_csv(filepath_or_buffer,low_memory=True,memory_map=False,iterator=False,chunksize=None,...)我找不到任何关于low_memory或memory_map标志的文档。我很困惑这些功能是否已经实现,如果是的话它们是如何工作的。具体而言,memory_map:如果实现,它是否使用np.memmap,如果是,它是否将各个列存储为memmap或行。low_memory:它是否指定像cache这样的东西存储在内存中?我们可以将现有的DataFrame

python - 如何使用 Python 多处理 Pool.map 在 for 循环中填充 numpy 数组

我想在for循环中填充一个2D-numpy数组,并通过使用多处理来加快计算速度。importnumpyfrommultiprocessingimportPoolarray_2D=numpy.zeros((20,10))pool=Pool(processes=4)deffill_array(start_val):returnrange(start_val,start_val+10)list_start_vals=range(40,60)forlineinxrange(20):array_2D[line,:]=pool.map(fill_array,list_start_vals)pool

python - 避免在 multiprocessing.Pool worker 中使用全局变量来获取不可篡改的共享状态

我经常发现自己用Python编写程序,构建一个大型(兆字节)只读数据结构,然后使用该数据结构分析一个非常大(总共数百兆字节)的小记录列表。每条记录都可以并行分析,所以一个自然的模式是设置只读数据结构并将其分配给全局变量,然后创建一个multiprocessing.Pool。(通过fork将数据结构隐式复制到每个工作进程中),然后使用imap_unordered并行处理记录。这种模式的骨架看起来像这样:classifier=Nonedefclassify_row(row):returnclassifier.classify(row)defclassify(classifier_spec,

python - 函数作为 Python 中的对象 : what exactly is stored in memory?

我已经使用Python解决实际问题有一段时间了,但我仍然没有对幕后发生的事情有正确的理论理解。例如,我很难理解Python如何将函数视为对象。我知道函数是“函数”类的对象,带有“调用”方法,并且我知道我可以通过为它们编写“调用方法”来使我的自定义类表现得像函数。但是我无法弄清楚在创建新函数时确切地存储在内存中的内容,以及如何访问存储的信息。为了进行实验,我编写了一个小脚本来创建许多函数对象并将它们存储在一个列表中。我注意到这个程序用了很多内存。funct_list=[]foriinrange(10000000):deffunct(n):returnn+ifunct_list.appen

python - 计算执行期间在 multiprocessing.Pool 中执行的任务总数

我很乐意就目前的谈话总体说明我们只是。我正在做农活,想知道目前的进展。因此,如果我将100作业发送到10处理器,我该如何显示当前已返回的作业数。我可以获得ID,但是如何从我的map函数中计算已完成返回的作业数。我按如下方式调用我的函数:op_list=pool.map(PPMDR_star,list(varg))在我的函数中,我可以打印当前名称current=multiprocessing.current_process()print'Running:',current.name,current._identity 最佳答案 如果您

python - Keras 与 TensorFlow : Use memory as it's needed [ResourceExhaustedError]

所以我试图用多个数据集来污染我的CNN并且当我添加足够的数据时(例如当我将多个集合作为一个集合添加或当我尝试添加具有超过一百万个样本的集合时)它会接缝抛出一个ResourceExhaustedError。至于说明here,我尝试添加fromkeras.backend.tensorflow_backendimportset_sessionimporttensorflowastfconfig=tf.ConfigProto()config.gpu_options.per_process_gpu_memory_fraction=0.3set_session(tf.Session(config=

python - 读取 Python 的 memory_profiler 的输出

我无法理解memory_profiler的输出。基本上,它看起来像这样:Filename:tspviz.pyLine#MemusageIncrementLineContents================================================734.589844MiB34.589844MiB@profile(precision=6)8defparse_arguments():934.917969MiB0.328125MiBa=[x**2forxinrange(10000)]在第9行我们可以清楚地看到,我们使用了一些内存。现在,我用sys.getsizeof