我想知道我的Python应用程序的内存使用情况,并且特别想知道哪些代码块/部分或对象占用了大部分内存.Google搜索显示商业广告是Python Memory Validator(仅限Windows).
我没有尝试任何人,所以我想知道哪一个是最好的考虑:
提供大部分细节.
我必须对代码进行最少或不做任何更改.
我想要一个双列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适合剩余的宽度, 因为我需要两个向左对齐的列
是否有一种简单的方法来迭代列名和值对?
我的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 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)我想阻止几个号码的来电,因为我想写一个我自己的应用程序.那么我应该使用哪些API?
基本上我想在通话时收到通知,我想比较数字,如果它是我想阻止的,我想要切断电话或将其静音,或者如果可能的话将其静音并记录下来.
我正在创建一个应用程序,其唯一的组件是service继续在后台运行(基本上是代理服务器),但我无法找到如何启动该服务的方法.应用程序无法进行任何UI或用户交互,因此我不使用Activity.
Broadcast receiver可以收听BOOT广播,但如何在安装时首次启动服务,如何让它保持运行?或者是否有安装应用程序后我可以收听的广播,例如可能是TIME_TICK,但必须从我认为的活动中注册.
通过浏览decimal.py,它使用NotImplemented了许多特殊方法.例如
class A(object):
def __lt__(self, a):
return NotImplemented
def __add__(self, a):
return NotImplemented
Run Code Online (Sandbox Code Playgroud)
未实现
可以由"富比较"特殊方法(
__eq__(),__lt__()和朋友)返回的特殊值,以指示未针对其他类型实现比较.
它没有谈论其他特殊方法,也没有描述行为.
它似乎是一个神奇的对象,如果从其他特殊方法返回引发TypeError,并在"丰富的比较"特殊方法什么也不做.
例如
print A() < A()
Run Code Online (Sandbox Code Playgroud)
打印True,但
print A() + 1
Run Code Online (Sandbox Code Playgroud)
加注TypeError,所以我很好奇发生了什么以及NotImplemented的用法/行为是什么.
我有一个小部件的树结构,例如集合包含模型,模型包含小部件.我想复制整个集合,copy.deepcopy与'pickle and de pickle'对象相比更快,但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) 好吧,我在这里有点不对,我已经浪费了一个小时了,所以希望你们其中一个人可以帮助我.
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数组中的每个键?
你可以看到我失败的尝试,但希望能让你深入了解我想要实现的目标.
是否有可能改变当前流程的环境变量?
更具体地说,我想改变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 ×6
android ×2
arrays ×1
callblocking ×1
css ×1
deep-copy ×1
html ×1
javascript ×1
performance ×1
phone-call ×1
pickle ×1
profiling ×1
push ×1
service ×1
sqlalchemy ×1