小编Pau*_*aul的帖子

内存高效的内置SqlAlchemy迭代器/生成器?

我有一个~10M记录的MySQL表,我使用SqlAlchemy进行交互.我发现对这个表的大型子集的查询将占用太多内存,即使我认为我使用的是内置生成器,智能地获取数据集的一口大小的块:

for thing in session.query(Things):
    analyze(thing)
Run Code Online (Sandbox Code Playgroud)

为了避免这种情况,我发现我必须构建自己的迭代器,这些迭代器会以块的形式出现:

lastThingID = None
while True:
    things = query.filter(Thing.id < lastThingID).limit(querySize).all()
    if not rows or len(rows) == 0: 
        break
    for thing in things:
        lastThingID = row.id
        analyze(thing)
Run Code Online (Sandbox Code Playgroud)

这是正常的还是有关于SA内置发电机我缺少的东西?

这个问题的答案似乎表明内存消耗是不可预期的.

python mysql sqlalchemy

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

一种制作大型随机字节数组的有效方法

我需要创建一个特定大小的大型字节,但在运行时之前不知道大小.字节需要相当随机.字节数大小可以小到几KB,但可以大到几MB.我不想逐字节迭代.这太慢了 - 我需要与numpy.random类似的性能.但是,我没有可用于此项目的numpy模块.是否有标准python安装的一部分可以做到这一点?或者我需要使用C编译自己的

对于那些要求时间的人:

>>> timeit.timeit('[random.randint(0,128) for i in xrange(1,100000)]',setup='import random', number=100)
35.73110193696641
>>> timeit.timeit('numpy.random.random_integers(0,128,100000)',setup='import numpy', number=100)
0.5785652013481126
>>> 
Run Code Online (Sandbox Code Playgroud)

python random bytearray

29
推荐指数
3
解决办法
2万
查看次数

帮助消除通配符导入的工具

我正在重构并消除一些相当单一的代码上的通配符导入.

Pylint似乎在列出通配符导入所带来的所有未使用的导入方面做得很好,但我希望它能提供一个已使用的导入列表,这样我就可以快速替换通配符导入.有什么快速的方法吗?我即将解析pyLint的输出并set.difference()对此和dir()导入的模块执行操作.但我敢打赌,我不知道有一些工具/程序.

python code-analysis pylint

21
推荐指数
2
解决办法
1828
查看次数

如何在C API中生成ipairs(而不是成对)行为

在Lua,pairsipairs可以遍历以不同的顺序相同的元件:

> t = {[1]=1, [2]=2, [3]=3}
> for k,v in pairs(t) do print(k,v) end
2       2
1       1
3       3
> for k,v in ipairs(t) do print(k,v) end
1       1
2       2
3       3
Run Code Online (Sandbox Code Playgroud)

当使用C API时,我只看到一个用于迭代表的工具:lua_next()函数,它的行为非常类似于pairs()Lua函数,它产生上面显示的2-1-3顺序.

我正在寻找一种有效的C方法,用于顺序迭代表的整数键(ipairs的C API版本).

天真地,我考虑过:

int tableLength = luaL_len(L, tableIndex);
for (i=0, i++, i>tableLength){   
    // if t[i] is not null ...
}
Run Code Online (Sandbox Code Playgroud)

但我不清楚表大小与连续整数键数不匹配的潜在性能问题:

t = {[1]=1, [2]=2, [4]=4}     -- has a (reported) length of 4 …
Run Code Online (Sandbox Code Playgroud)

c api lua

11
推荐指数
1
解决办法
1117
查看次数

如何在Windows 7中使用Python廉价创建一个非常大的文件?

可能重复:
在Windows系统上快速创建大文件?

出于测试目的,我希望能够创建和删除非常大的文件(几个GB).我没有必要写任何特定于他们的东西.它们可能是随机数据.有没有办法通过简单地分配磁盘上的空间来生成一个大文件?如果没有,写这样一个文件的最快方法是什么?要在几秒钟内创建文件是可取的.

我需要在Python脚本中执行此操作,并且在Windows 7上执行此操作.

python filesystems file windows-7

8
推荐指数
1
解决办法
5965
查看次数

使用sqlalchemy orm从查询创建临时表

我可以这样创建一个临时表:

session.execute("CREATE TABLE temptable SELECT existingtable.id, "
    "existingtable.column2 FROM existingtable WHERE existingtable.id<100000")
Run Code Online (Sandbox Code Playgroud)

但新表格不可读,因为它表示它没有主键. existingtable.id是exisitingtable的主要关键,所以我期望它在临时表中获得相同的处理.

但是,我宁愿找到一些ORM方式来做到这一点.鉴于:

temp_table = Table('temptable', metadata, 
    Column('id', Integer, primary_key=True),
    Column('column2', Integer),
    useexisting=True )
class TempTable(object):
    pass
mapper(TempTable, temp_table)
temp_table.create(bind=session.bind, checkfirst=True)
if session.query(TempTable).delete(): #make sure it's empty
    session.commit()
Run Code Online (Sandbox Code Playgroud)

如何temp_tableexistingtable不执行100000 session.query.add(TempTable(...))命令的情况下填充一些选定的内容?或者有没有办法从类似上面的纯SQL版本的查询创建表?

python sql sqlalchemy

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

在linux中排序多个文件

我有多个(很多)文件; 每个都非常大:

file0.txt
file1.txt
file2.txt
Run Code Online (Sandbox Code Playgroud)

我不想将它们加入到单个文件中,因为生成的文件将是10+ Gigs.每个文件中的每一行包含一个40字节的字符串.这些字符串现在已经很好地排序了(大约1:10步骤是值的减少而不是增加).

我想订购这些线.(如果可能的话就位?)这意味着从末尾的一些file0.txt行将被移动到开头,file1.txt反之亦然.

我正在研究Linux并且对它很新.我知道sort单个文件的命令,但我想知道是否有办法对多个文件进行排序.或许有一种方法可以制作一个由较小的文件制作的伪文件,linux会将其视为单个文件.

我所知道的可以做到:我可以单独对每个文件进行排序并读入file1.txt以找到大于最大值的值file0.txt(并且类似地从末尾抓取行file0.txt),加入然后排序..但这是一个痛苦而且假设没有file2.txt属于的价值file0.txt(但在我的情况下极不可能)

编辑

要清楚,如果文件看起来像这样:

f0.txt
DDD
XXX
AAA

f1.txt
BBB
FFF
CCC

f2.txt
EEE
YYY
ZZZ
Run Code Online (Sandbox Code Playgroud)

我要这个:

f0.txt
AAA
BBB
CCC

f1.txt
DDD
EEE
FFF

f2.txt
XXX
YYY
ZZZ
Run Code Online (Sandbox Code Playgroud)

linux sorting file

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

两条线之间的角度是错误的

我想获得两条线之间的角度.所以我使用了这段代码.


int posX = (ScreenWidth) >> 1;

int posY = (ScreenHeight) >> 1;

double radians, degrees;

radians = atan2f( y - posY , x - posX);

degrees = -CC_RADIANS_TO_DEGREES(radians);

NSLog(@"%f %f",degrees,radians);
Run Code Online (Sandbox Code Playgroud)

但它不起作用.日志是:146.309935 -2.553590

怎么了?我不知道原因.请帮我.

在此输入图像描述

objective-c cocos2d-iphone

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

使用sqlalchemy转义特殊字符

我在mySQL中存储文件名和文件路径.使用LIKE表达式从数据库中检索它们需要我转义与mysql特殊字符冲突的所有允许的文件名字符.我很高兴只使用python的string.replace()方法,但想知道是否有一个更标准或内置的方法用SQLalchemy清理文件路径或在mySQL中处理文件路径.

编辑:更多信息.我需要解决方案与操作系统无关并建立.它不需要在SA中实现.我会接受任何有效的编码程序.保存,我需要一个需要转义的所有字符列表和一个转义字符串的智能选择.

python mysql sqlalchemy escaping

5
推荐指数
1
解决办法
9470
查看次数

python中良好的持久同步队列

我并不立即关心fifo或filo选项,但将来可能会很好。

我正在寻找的是一种很好的快速简单的方法来将磁盘上存储(最多一个数据或数千万个条目)(可以由多个进程获取和放置)。这些条目只是简单的40字节字符串,而不是python对象。不要真的需要的所有功能搁置

我看过这个http://code.activestate.com/lists/python-list/310105/ 看起来很简单。需要将其升级到新的队列版本。

想知道是否还有更好的东西?我担心在电源中断的情况下,整个腌制文件都会损坏,而不仅仅是一条记录。

python queue

5
推荐指数
2
解决办法
5410
查看次数