Tag: python

Python日志logging(函数名称,文件名,行号)使用单个文件

我正试图学习一个应用程序如何工作。 为此,我将debugging命令作为每个函数的主体的第一行插入,目标是logging函数的名称以及将消息发送到日志输出的行号(代码内)。 最后,由于这个应用程序包含很多文件,我想创build一个日志文件,这样我就可以更好地理解应用程序的控制stream。 这是我所知道的: 为了获得函数名,我可以使用function_name.__name__但我不想使用function_name(这样我就可以在所有函数的主体中快速复制和粘贴一个通用的Log.info("Message") )。 我知道这可以使用__func__macros在C中完成,但我不知道有关Python。 为了得到文件名和行号,我已经看到(我相信)我的应用程序正在使用Python locals()函数,但在一个语法,我不完全知道例如: options = "LOG.debug('%(flag)s : %(flag_get)s' % locals()) ,我尝试使用类似LOG.info("My message %s" % locals())产生的东西像{'self': <__main__.Class_name object at 0x22f8cd0>} 。这个任何input请? 我知道如何使用日志logging,并添加处理程序来login到一个文件,但我不知道是否可以使用单个文件logging在项目中的函数调用的正确顺序的所有日志消息。 我将不胜感激任何帮助。 谢谢!

Python 3.x有哪些SOAP库?

我在网上search了一个现有的, 支持 Python 3的 SOAP库。 (客户端和服务器) 这里列出了我find的库: Python 2: Zeep :在Python 2.7 / 3中是有效和有效的 SOAPy :停止了Python 2项目 ZSI :停止了Python 2项目 soaplib :停止了Python 2项目 SUDS :已停止使用Python 2项目(自2012年2月以来没有任何活动) rpclib :停止使用Python 2项目(自08年8月以来没有任何活动) Python 3: Zeep : 积极有效的 Python 2/3项目 SOAPy :停止了Python 2项目 pysimplesoap : 活跃的 Python 2/3项目 SUDS-jurko :相当不活跃。 Python 2/3项目 拉登 :低活动。 但只有Web服务 这份清单对你来说是否完整? (仅供参考,我用这篇文章作为出发点(这篇文章的目的是相同的,但对于Python 2)) ladon在我看来是Python […]

App Engine调度程序何时使用新线程与新实例?

如果我在我的app.yaml文件中设置了threadsafe: true ,那么在创build一个新的实例来提供请求时,与在现有的实例上创build一个新的线程的时候有什么规则? 如果我有一个应用程序在每个请求上执行一些计算密集型的任务,multithreading是否会为我购买任何东西? 换句话说,是多核实例还是单核? 或者,当现有的线程在IO上等待时,新的线程是否只能启动?

如何在matplotlib中使用imshow将NaN值作为特殊颜色来绘制?

我正在尝试在matplotlib中使用imshow来将数据绘制为热图,但其中一些值是NaN。 我想NaNs被渲染为一个在颜色映射中找不到的特殊颜色。 例: import numpy as np import matplotlib.pyplot as plt f = plt.figure() ax = f.add_subplot(111) a = np.arange(25).reshape((5,5)).astype(float) a[3,:] = np.nan ax.imshow(a, interpolation='nearest') f.canvas.draw() 由此产生的图像出乎意料地全部为蓝色(喷射色彩图中最低的颜色)。 但是,如果我这样做阴谋: ax.imshow(a, interpolation='nearest', vmin=0, vmax=24) – 然后我得到更好的东西,但是NaN值被绘制成与vmin相同的颜色…是否有一种优雅的方式可以设置NaN以特殊颜色(例如:灰色或透明)绘制?

为什么我们在导入print_function之后调用print(在Python 2.6中)

为了获得3.0打印function,我们在Python 2.6中执行以下操作: from __future__ import print_function 但是使用函数我们调用print()而不是print_function()。 这只是一个不一致或者是否有一个很好的理由呢? 为什么不是以下几点: from __future__ import print

使用__init__.py

我很难理解python的__init__.py文件在我的项目中的使用场景或devise目标。 假设我有'模型'目录(引用为一个包),其中包含以下文件 __init__.py meta.py solrmodel.py mongomodel.py samodel.py 我find了两种使用__init__.py : 我有一个共同的定义,需要在solrmodel.py , mongomodel.py , samodel.py 。 我可以使用__init__.py作为所有* model.py类的基本/通用定义吗? 这意味着我必须导入model/__init__.py 。 或者, __init__.py init__.py应该自己导入solrmodel.py,mongomodel.py,samodel.py的定义,并且允许像这样轻松导入类或函数: # file: __init__.py from mongomodel import * from solrmodel import * from samodel import * (我知道,不推荐import * ,我只是用它作为约定) 我无法决定以上两种情况。 __init__.py有更多的使用场景,你能解释一下使用情况吗?

你如何确定matplotlib正在使用哪个后端?

无论是交互式的,例如从一个Ipython会话中,或者从一个脚本中,如何确定matplotlib正在使用哪个后端?

什么是最快(访问)类似于Python的结构对象?

我正在优化一些主要瓶颈正在运行的代码,并访问一个非常大的类结构对象列表。 目前我正在使用namedtuples,为了可读性。 但是一些使用“timeit”的快速基准testing表明,在性能是一个因素的情况下,这确实是一个错误的方法: 用a,b,c命名元组: >>> timeit("z = ac", "from __main__ import a") 0.38655471766332994 使用__slots__类,与a,b,c: >>> timeit("z = bc", "from __main__ import b") 0.14527461047146062 带键a,b,c的字典: >>> timeit("z = c['c']", "from __main__ import c") 0.11588272541098377 带三个值的元组,使用一个常量键: >>> timeit("z = d[2]", "from __main__ import d") 0.11106188992948773 列出三个值,使用一个常量键: >>> timeit("z = e[2]", "from __main__ import e") 0.086038238242508669 具有三个值的元组,使用本地键: >>> […]

Conda是否取代了virtualenv?

我最近在安装SciPy之后发现了Conda ,特别是在我正在开发的Heroku应用程序中。 使用Conda可以创build与virtualenv非常类似的环境。 我的问题是: 如果我使用Conda,它将取代virtualenv的需要? 如果不是,我怎么一起使用这两个? 我在Conda中安装virtualenv,还是在virtualenv中安装Conda? 我还需要使用点吗? 如果是这样的话,我仍然可以在一个孤立的环境中安装pip软件包吗?

在python中复制构造函数?

python中有一个复制构造函数吗? 如果不是,我会做什么来实现类似的东西? 情况是,我正在使用一个库,我已经扩展了其中的一个类,额外的function,我想能够将我从库中得到的对象转换为我自己的类的实例。