小编eri*_*ich的帖子

如何加速python嵌套循环?

我正在python中执行嵌套循环,包含在下面.这是搜索现有金融时间序列并查找符合某些特征的时间序列中的时段的基本方式.在这种情况下,有两个单独的,大小相等的数组,表示"关闭"(即资产价格)和"交易量"(即在此期间交换的资产数量).对于每个时间段,我希望期待所有未来的时间间隔,长度在1和INTERVAL_LENGTH之间,并查看这些时间间隔是否具有与我的搜索匹配的特征(在这种情况下,接近值的比率大于1.0001且更小超过1.5,总和的体积大于100).

我的理解是,使用NumPy时加速的一个主要原因是,只要你在整个数组上运行(例如numpy_array),解释器就不需要在每次计算操作数时检查操作数.*2),但显然下面的代码没有利用它.有没有办法用某种窗口函数替换内部循环,这可能会导致加速,或者使用numpy/scipy以任何其他方式在本机python中大幅提升速度?

或者,是否有更好的方法来执行此操作(例如,在C++中编写此循环并使用编织会更快)?

ARRAY_LENGTH = 500000
INTERVAL_LENGTH = 15
close = np.array( xrange(ARRAY_LENGTH) )
volume = np.array( xrange(ARRAY_LENGTH) )
close, volume = close.astype('float64'), volume.astype('float64')

results = []
for i in xrange(len(close) - INTERVAL_LENGTH):
    for j in xrange(i+1, i+INTERVAL_LENGTH):
        ret = close[j] / close[i]
        vol = sum( volume[i+1:j+1] )
        if ret > 1.0001 and ret < 1.5 and vol > 100:
            results.append( [i, j, ret, vol] )
print results
Run Code Online (Sandbox Code Playgroud)

python finance numpy scipy

10
推荐指数
1
解决办法
9977
查看次数

延迟评估迭代NumPy数组

我有一个Python程序来处理相当大的NumPy数组(数百兆字节),这些数组存储在pickle文件的磁盘上(每个文件一个~100MB数组).当我想对数据运行查询时,我通过pickle加载整个数组,然后执行查询(这样从Python程序的角度来看整个数组都在内存中,即使操作系统正在交换它) .我这样做主要是因为我相信能够在NumPy阵列上使用矢量化操作比在每个项目中使用for循环要快得多.

我在一台Web服务器上运行它,它有一个内存限制,我很快就遇到了.我在数据上运行了许多不同类型的查询,因此编写"分块"代码,从单独的pickle文件加载部分数据,处理它们,然后进入下一个块可能会增加很多复杂性.对于处理这些大型数组的任何函数来说,最好使这个"分块"透明.

似乎理想的解决方案就像一个生成器,它定期从磁盘加载一块数据,然后逐个传递数组值.这将大大减少程序所需的内存量,而不需要对各个查询功能进行任何额外的工作.可以这样做吗?

python memory-management numpy lazy-evaluation

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

Git从命令行询问密码

我在服务器上设置git和gitosis来管理我的回购.它适用于我设置的初始shell帐户,即我可以运行:

git clone git@MYSERVER:gitosis-admin.git
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试使用我创建的单独帐户(通过gitosis.conf)时,它一直要求输入密码:

git clone johndoe@MYSERVER:gitosis-admin.git
Run Code Online (Sandbox Code Playgroud)

我设置了SSH密钥并将副本推送到服务器上的keydir.这个问题似乎解决了同样的问题,但给出的解决方案是tortoisegit.

Git一直要求输入密码

我怎么告诉git使用ssh密钥而不是要求输入密码?

git gitosis

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