问题列表 - 第15767页

为什么Python的mmap不适用于大文件?

[编辑:此问题仅适用于32位系统.如果你的计算机,你的操作系统和你的python实现是64位的,那么mmap-ing巨大的文件可以正常工作并且非常高效.

我正在编写一个模块,其中包括允许按位读取文件访问.这些文件可能很大(数百GB),所以我编写了一个简单的类,让我像处理字符串一样处理文件并隐藏所有的搜索和阅读.

当我写我的包装类时,我不知道mmap模块.在阅读mmap的文档时,我认为"很棒 - 这正是我所需要的,我将取出我的代码并用mmap替换它.它可能效率更高,删除代码总是好的."

问题是mmap不适用于大文件!这对我来说非常令人惊讶,因为我认为它可能是最明显的应用程序.如果文件超过几千兆字节,那么我得到一个EnvironmentError: [Errno 12] Cannot allocate memory.这只发生在32位Python构建中,所以它似乎耗尽了地址空间,但我找不到任何关于此的文档.

我的代码就是

f = open('somelargefile', 'rb')
map = mmap.mmap(f.fileno(), 0, access=mmap.ACCESS_READ)
Run Code Online (Sandbox Code Playgroud)

所以我的问题是我错过了一些明显的东西吗?有没有办法让mmap可以在大文件上移植,或者我应该回到我天真的文件包装器?


更新:似乎有一种感觉,Python mmap应该具有与POSIX mmap相同的限制.为了更好地表达我的挫败感,这是一个简单的类,它具有mmap的一小部分功能.

import os

class Mmap(object):
    def __init__(self, f):
        """Initialise with a file object."""
        self.source = f

    def __getitem__(self, key):
        try:
            # A slice
            self.source.seek(key.start, os.SEEK_SET)
            return self.source.read(key.stop - key.start)
        except AttributeError:
            # single element
            self.source.seek(key, os.SEEK_SET)
            return self.source.read(1)
Run Code Online (Sandbox Code Playgroud)

它是只读的,并没有做任何花哨的事情,但我可以像使用mmap一样:

map2 = Mmap(f)
print map2[0:10]
print map2[10000000000:10000000010]
Run Code Online (Sandbox Code Playgroud)

除了文件大小没有限制.真的不太难......

python memory performance mmap

44
推荐指数
5
解决办法
3万
查看次数

打印WPF BitmapImage

打印BitmapImage的最佳方法是什么?我来自System.Drawing的背景,所以我正在考虑将其转换为Bitmap然后打印它,但我认为可能有更好的方法.

谢谢!

.net printing wpf imaging

6
推荐指数
1
解决办法
5699
查看次数

ASP.MVC防伪令牌和加密错误

我正在使用ELMAH来处理我的MVC网站中的错误,并且在过去的几周里我注意到我收到了一些CryptographicExceptions.消息是:

System.Security.Cryptography.CryptographicException:填充无效,无法删除.

System.Web.Mvc.HttpAntiForgeryException:未提供所需的防伪标记或无效.---> System.Web.HttpException:viewstate MAC验证失败.如果此应用程序由Web场或群集托管,请确保配置指定相同的validationKey和验证算法.AutoGenerate不能在群集中使用.--->

应用程序未在群集中运行,我似乎无法重现这些错误.它们看起来像是有效的请求 - 而不是手工制作的帖子 - 并且包含__RequestVerificationToken cookie.我在页面上的表单(我的登录表单)中有所需的HTML帮助器.

我还没有任何用户投诉,所以我假设最终它适用于任何试图登录的人,但我不知道为什么会发生这种情况.

其他人看到这种行为或对如何诊断异常有任何想法 - 就像我说的,我不能让它失败.删除FF中的cookie会出现不同的错误.修改cookie(更改或删除内容)也会导致不同的错误,修改页面上隐藏令牌输入的内容也会导致错误.

asp.net-mvc exception antiforgerytoken

7
推荐指数
1
解决办法
4087
查看次数

7
推荐指数
1
解决办法
1129
查看次数

如何编写包含'乳胶中的字符'的编程代码?

我正在尝试使用逐字环境在乳胶中编写编程代码,但是当我写的时候

  \begin{verbatim}
     char ch = 'x';
  \end{verbatim}
Run Code Online (Sandbox Code Playgroud)

那么'x周围的'字符显示不正确(它们看起来像"卷曲").我该如何解决这个问题?

latex

25
推荐指数
4
解决办法
1万
查看次数

检索ADO记录集字段名称(经典ASP)

我想知道是否有人可以帮忙:

长话短说,我正在使用MSSQL2005来构建一个Pivot表.正在检查的数据受日期范围限制(从最近的星期一到所选日期的所有数据为1周)

当我运行存储过程并传递一个日期时,我得到正确的表格,例如:

时间 | 09年1月1日 | 2009年1月2日 | 2009年1月3日 | ...

09:00 | 0 | 9 | 25 | ...

09:30 | 8 | 27 | 65 | ...

10:00 | 20 | 44 | 112 | ...

(对于残暴的"表格"格式表示道歉).

我唯一的问题是列标题将根据传入SP的日期(所需的视图日期)和SP内的逻辑(强制左侧列为最接近的星期一)而变化指定).

这意味着当我向用户显示结果时,我(当前)需要复制经典ASP中的日期检查逻辑[容易但可维护性失败]

我真正需要的是一种从记录集本身检索列名的方法.

有人可以指点我正确的方向吗?

我用Google搜索了但是我得到的所有结果似乎都与读取表格模式有关 - 在这种情况下这没有用,因为我的表格是在内存中动态生成的.

非常感谢您提供的任何帮助

pivot ado recordset asp-classic

9
推荐指数
2
解决办法
4万
查看次数

如何检查变量中的字符数,并在该变量中的字符之间添加空格?

我有一个'price'变量,它包含MySQL数据库中的一些整数.

我想检查'price'变量包含多少个数字,并根据有多少个数字在变量中添加一个空格.见下文:

例:

如果'price'是150000,我希望输出为150 000(注意空格).或者,如果它是19000我希望它输出19 000 ...

你会如何以最简单的方式做到这一点?

php mysql

0
推荐指数
1
解决办法
393
查看次数

如何解决Tomcat应用程序访问的内存泄漏第三方DLL(无源代码)?

我们有一个项目,在Tomcat应用程序中通过JacoZoom访问第三方DLL .显然DLL泄漏内存(由供应商确认),但供应商无意修复此问题.内存泄漏迫使Tomcat定期重启,这对用户来说自然是一个很大的不便.

解决这个问题的最佳方法是什么?我们考虑的一个选项是拥有Tomcat服务器的两个实例并定期重新启动另一个实例,并将用户重定向到另一个实例.

编辑:通过创建另一个DLL来解决,该DLL在需要时杀死并重新创建供应商DLL.基本上这三个kernel32调用用于完成功能:


Private Declare Function GetModuleHandle Lib "kernel32.dll" Alias "GetModuleHandleW" (ByVal DllName As Long) As Long
Private Declare Function FreeLibrary Lib "kernel32" (ByVal hLibModule As Long) As Long
Private Declare Function LoadLibrary Lib "kernel32" Alias "LoadLibraryA" (ByVal lpLibFileName As String) As Long

幸运的是,JacoZoom JAR文件似乎并不介意DLL被杀死并重新创建.

java dll tomcat memory-leaks

2
推荐指数
1
解决办法
678
查看次数

jQuery:找到下一个表格行

我有一个表,包含行,包含细胞 - 其中一些包含img,如下所示:

<img id="FormView1_btnSave_row1%1%new" style="border-width: 0px; cursor: pointer;"
src="grafik/ok_16x16.gif" onclick="cleverStuff(this)"/>
Run Code Online (Sandbox Code Playgroud)

在函数cleverStuff中我想在单击按钮的行之后的行上操作 - 这个特殊按钮仅包含在最后一行可见行中,下面有一堆隐藏行我想做第一行隐藏线可见 - 但我没能到达下一行.我的理解是,所有组合parent()next()可以用来从img到td,到tr,最后到下一个tr.所以我试着验证这个:

$(ctrl).attr('id') 正确返回img的id :)

$(ctrl).parent().attr('id') 返回NULL.

我在这里错过了什么?

javascript traversal

23
推荐指数
3
解决办法
8万
查看次数

m2eclipse将'target'目录标记为'Derived'

我有一个Maven Java项目,使用导入m2eclipse.

target/目录未标记为" Derived" m2eclipse.

问题:

  • 它已经过验证,因此任何验证错误都会出现两次.我的例子显示了一个JSP Problem,当我故意在jsp中插入错误时.
  • 当我想用Ctrl-Shift-R打开资源时,所有文件都出现两次,我冒着编辑副本而不是原始文件的风险.

可能会看到post eclipse-ignore-folder

注意:当我手动将目录设置为派生时,验证问题不会消失,因此这只是解决方案的一部分......

问题:
我需要做些什么,以便m2eclipse将target/目录设置为'Derived'?

java maven-2 derived m2eclipse

7
推荐指数
1
解决办法
2710
查看次数