小编Anu*_*yal的帖子

建议使用哪种Python内存分析器?

我想知道我的Python应用程序的内存使用情况,并且特别想知道哪些代码块/部分或对象占用了大部分内存.Google搜索显示商业广告是Python Memory Validator(仅限Windows).

开源的是PySizerHeapy.

我没有尝试任何人,所以我想知道哪一个是最好的考虑:

  1. 提供大部分细节.

  2. 我必须对代码进行最少或不做任何更改.

python performance profiling memory-management

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

展开div以获取剩余宽度

我想要一个双列div布局,其中每个都可以有可变宽度,例如

div {
    float: left;
}
.second {
    background: #ccc;
}
Run Code Online (Sandbox Code Playgroud)
<div>Tree</div>
<div class="second">View</div>
Run Code Online (Sandbox Code Playgroud)

我希望'view'dec扩展到'tree'div填充所需空间后可用的整个宽度.目前我的'view'div被调整为它包含的内容.如果两个div占据整个高度也会很好

不重复免责声明:

当float:left设置时,将div扩展到max width, 因为左边的一个具有固定的宽度.

帮助div - 使div适合剩余的宽度, 因为我需要两个向左对齐的列

html css multiple-columns

518
推荐指数
9
解决办法
30万
查看次数

将sqlalchemy行对象转换为python dict

是否有一种简单的方法来迭代列名和值对?

我的sqlalchemy版本是0.5.6

下面是我尝试使用dict(row)的示例代码,但它抛出异常,TypeError:'User'对象不可迭代

import sqlalchemy
from sqlalchemy import *
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker

print "sqlalchemy version:",sqlalchemy.__version__ 

engine = create_engine('sqlite:///:memory:', echo=False)
metadata = MetaData()
users_table = Table('users', metadata,
     Column('id', Integer, primary_key=True),
     Column('name', String),
)
metadata.create_all(engine) 

class User(declarative_base()):
    __tablename__ = 'users'

    id = Column(Integer, primary_key=True)
    name = Column(String)

    def __init__(self, name):
        self.name = name

Session = sessionmaker(bind=engine)
session = Session()

user1 = User("anurag")
session.add(user1)
session.commit()

# uncommenting next line throws exception 'TypeError: 'User' object is not iterable'
#print …
Run Code Online (Sandbox Code Playgroud)

python sqlalchemy

220
推荐指数
19
解决办法
18万
查看次数

Python中常见的陷阱

可能重复:
Python 2.x陷阱和地雷

今天,多年后我被可变的默认参数再次咬了.除非需要,我通常不会使用可变的默认参数,但我认为随着时间的推移我忘了这一点.今天在应用程序中,我在PDF生成函数的参数列表中添加了tocElements = [],现在每次调用"generate pdf"后,"目录"变得越来越长.:)

我还应该在我的列表中添加什么才能避免?

  • 始终以相同的方式导入模块,例如,from y import x并将import x视为不同的模块.

  • 不要使用范围代替列表因为range()无论如何都将成为迭代器,以下将失败:

    myIndexList = [0, 1, 3]
    isListSorted = myIndexList == range(3)  # will fail in 3.0
    isListSorted = myIndexList == list(range(3))  # will not
    
    Run Code Online (Sandbox Code Playgroud)

    使用xrange可能会错误地做同样的事情:

    myIndexList == xrange(3)
    
    Run Code Online (Sandbox Code Playgroud)
  • 小心捕获多种异常类型:

    try:
        raise KeyError("hmm bug")
    except KeyError, TypeError:
        print TypeError
    
    Run Code Online (Sandbox Code Playgroud)

    这打印出"嗯bug",虽然它不是一个bug; 看起来我们正在捕获这两种类型的异常,但我们只将KeyError作为变量TypeError捕获,而是使用它:

    try:
        raise KeyError("hmm bug")
    except (KeyError, TypeError):
        print TypeError
    
    Run Code Online (Sandbox Code Playgroud)

python

75
推荐指数
20
解决办法
2万
查看次数

如何在android中阻止调用

我想阻止几个号码的来电,因为我想写一个我自己的应用程序.那么我应该使用哪些API?

基本上我想在通话时收到通知,我想比较数字,如果它是我想阻止的,我想要切断电话或将其静音,或者如果可能的话将其静音并记录下来.

android phone-call callblocking incoming-call

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

如何启动仅限Service的Android应用程序

我正在创建一个应用程序,其唯一的组件是service继续在后台运行(基本上是代理服务器),但我无法找到如何启动该服务的方法.应用程序无法进行任何UI或用户交互,因此我不使用Activity.
Broadcast receiver可以收听BOOT广播,但如何在安装时首次启动服务,如何让它保持运行?或者是否有安装应用程序后我可以收听的广播,例如可能是TIME_TICK,但必须从我认为的活动中注册.

service android

48
推荐指数
2
解决办法
6万
查看次数

Python NotImplemented常量

通过浏览decimal.py,它使用NotImplemented了许多特殊方法.例如

class A(object):
    def __lt__(self, a):
        return NotImplemented

    def __add__(self, a):
        return NotImplemented
Run Code Online (Sandbox Code Playgroud)

Python的文件说:

未实现

可以由"富比较"特殊方法(__eq__(),__lt__()和朋友)返回的特殊值,以指示未针对其他类型实现比较.

它没有谈论其他特殊方法,也没有描述行为.

它似乎是一个神奇的对象,如果从其他特殊方法返回引发TypeError,并在"丰富的比较"特殊方法什么也不做.

例如

print A() < A()
Run Code Online (Sandbox Code Playgroud)

打印True,但

print A() + 1
Run Code Online (Sandbox Code Playgroud)

加注TypeError,所以我很好奇发生了什么以及NotImplemented的用法/行为是什么.

python

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

copy.deepcopy vs pickle

我有一个小部件的树结构,例如集合包含模型,模型包含小部件.我想复制整个集合,copy.deepcopy与'pickle and de pickle'对象相比更快,但cPickle用C语言写得快得多,所以

  1. 为什么我(我们)总是不使用cPickle而不是深度复制?
  2. 还有其他副本吗?因为pickle比deepcopy慢,但cPickle更快,所以可能是深度复制的C实现将是胜利者

示例测试代码:

import copy
import pickle
import cPickle

class A(object): pass

d = {}
for i in range(1000):
    d[i] = A()

def copy1():
    return copy.deepcopy(d)

def copy2():
    return pickle.loads(pickle.dumps(d, -1))

def copy3():
    return cPickle.loads(cPickle.dumps(d, -1))
Run Code Online (Sandbox Code Playgroud)

时序:

>python -m timeit -s "import c" "c.copy1()"
10 loops, best of 3: 46.3 msec per loop

>python -m timeit -s "import c" "c.copy2()"
10 loops, best of 3: 93.3 msec per loop

>python -m timeit -s "import …
Run Code Online (Sandbox Code Playgroud)

python pickle deep-copy

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

JavaScript数组推送键值

好吧,我在这里有点不对,我已经浪费了一个小时了,所以希望你们其中一个人可以帮助我.

var a = ['left','top'],
    x = [];

for(i=0;i<a.length;i++) {
    x.push({
        a[i] : 0
    });
}
Run Code Online (Sandbox Code Playgroud)

如何将值推送到var a数组中的每个键?

你可以看到我失败的尝试,但希望能让你深入了解我想要实现的目标.

javascript arrays push

27
推荐指数
2
解决办法
12万
查看次数

更改当前进程环境的LD_LIBRARY_PATH

是否有可能改变当前流程的环境变量?

更具体地说,我想改变python脚本,LD_LIBRARY_PATH以便在导入依赖于某些模块的模块'x'时xyz.so,xyz.so取自LD_LIBRARY_PATH中的给定路径

有没有其他方法动态更改库加载的路径?

编辑:我想我需要提一下,我已经尝试过像os.environ这样的东西["LD_LIBRARY_PATH"] = mypath os.putenv('LD_LIBRARY_PATH',mypath)

但这些修改了env.对于生成的子进程,而不是当前进程,并且模块加载不考虑新的LD_LIBRARY_PATH

Edit2,所以问题是我们可以改变环境或其他东西,以便库加载器看到它并从那里加载吗?

python shared-libraries environment-variables

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