小编bob*_*645的帖子

在Python中使用root logger或named logger是否更好?

我试图找出在多个模块中使用python登录的最佳实践.我在这里看到:http://docs.python.org/2/howto/logging#logging-from-multiple-modules关于如何使用根记录器来记录多个模块.正如链接指出的那样,你无法分辨你的应用程序在哪里显示你的消息,因为它们都显示了名称"root".

在我看来有两个选项(这假设我的模块不在包结构中,但只是在同一文件夹中的一堆模块):

1)使用示例中的根记录器,但更改日志格式以包含文件名:

# myapp.py
import logging
import mylib

def main():
    logging.basicConfig(format='%(asctime)s %(filename)s %(levelname)s: %(message)s', datefmt='%m/%d/%Y %I:%M:%S %p', level=logging.INFO)  #filename='myapp.log', 
    logging.info('Started')
    mylib.do_something()
    logging.info('Finished')

if __name__ == '__main__':
    main()

#mylib.py
import logging

def do_something():
    logging.info('Do something')




In [4]: import myapp

In [5]: myapp.main()
03/06/2014 12:22:07 PM myapp.py INFO: Started
03/06/2014 12:22:07 PM mylib.py INFO: Do something
03/06/2014 12:22:07 PM myapp.py INFO: Finished
Run Code Online (Sandbox Code Playgroud)

2)在主应用程序中使用根记录器,但在子模块中使用命名记录器,并在日志格式中使用"name"而不是"filename":

# myapp.py
import logging
import mylib

def main():
    #logging.basicConfig(format='%(asctime)s %(filename)s %(levelname)s: %(message)s', datefmt='%m/%d/%Y %I:%M:%S …
Run Code Online (Sandbox Code Playgroud)

python logging

16
推荐指数
1
解决办法
4791
查看次数

Google Compute实例可以按计划启动和停止吗?

我每天从桌面计算机上运行一次简单的任务3次.它在下午4点,晚上8点和凌晨1点连接到某个网站,下载少量数据(少于50mb),并将其存储在硬盘上.每天运行这一点非常重要,因此我正在考虑将其移至Google Compute.我知道我可以创建一个实例并将其保留在24/7/365,但这很昂贵.有没有办法让实例只在下午4点,晚上8点和凌晨1点开启,每次10分钟,这样数据可以下载,然后让它们关闭,所以我只收取30分钟/天的Google Compute时间?顺便说一句,我会使用Windows Server 2008图像(我相信它现在在Google Compute中有限预览),而不是linux图像,如果相关的话.

google-compute-engine

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

如何使用cvxopt进行带约束的均值方差优化?

我可以使用cvxopt来计算一个有效的边界,根据文档:

http://cvxopt.org/examples/book/portfolio.html

但是,我无法弄清楚如何添加约束,以便特定资产的最大允许权重存在上限.使用cvxopt可以吗?

这是我的代码到目前为止生成一个没有约束的有效边界,除了我相信b,它将权重的最大总和设置为1.我不确定G,h,A和mus是做什么的,而且文档不是真的可以解释一下.肌肉配方中的10**(5.0*t/N-1.0)来自何处?

from math import sqrt
from cvxopt import matrix
from cvxopt.blas import dot 
from cvxopt.solvers import qp, options 

# Number of assets
n = 4
# Convariance matrix
S = matrix( [[ 4e-2,  6e-3, -4e-3,   0.0 ], 
             [ 6e-3,  1e-2,  0.0,    0.0 ],
             [-4e-3,  0.0,   2.5e-3, 0.0 ],
             [ 0.0,   0.0,   0.0,    0.0 ]] )
# Expected return
pbar = matrix([.12, .10, .07, .03])

# nxn matrix of 0s
G = matrix(0.0, (n,n))
# Convert G to …
Run Code Online (Sandbox Code Playgroud)

python math mathematical-optimization cvxopt

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

如何在Pandas中更好地管理我对内存的使用?

我用熊猫来存储,负载和操纵财务数据.典型的数据文件是6000x4000 DataFrame(6000股x 4000个交易日),如果说一半股票在给定日期具有价值N/A,则将以CSV格式大小为200MB.我已经使用具有的存储器,这已经足够用于装载这种尺寸的整个的CSV到存储器中,执行各种计算,然后将结果存储16GB的工作站.在一般情况下,我在高峰使用期间最终使用大约10GB的RAM.我有我可以但更有效地做事情的感觉.我想将这个数字降到2GB左右,这样我就可以使用普通笔记本电脑和4GB内存来运行我的每日更新.这合理吗?我使用了太多内存,无论是我的硬件?

我理解上面的答案取决于我正在做的事情的细节.下面是功能我可能会遇到的类型的例子:

def momentum_strategy():
    # prices.csv is a matrix containing stock prices for 6000 stocks
    # and 4000 trading dates
    prices = pd.read_csv("prices.csv")
    # Daily stock returns
    returns = prices/prices.shift(1) -1 
    # Annualized return volatility
    volatility = pd.rolling_std(returns, 21, 21) * 252**0.5
    # 6-month stock returns
    trail6monthreturns = prices/prices.shift(21*6) - 1
    # Rank of 6 month stock returns
    retrank = trail6monthreturns.rank(axis=1, ascending=False)
    # Portfolio of the top 100 stocks as measured by 6 month return
    positions = retrank.apply(lambda …
Run Code Online (Sandbox Code Playgroud)

python hdf5 pandas

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