易截截图软件、单文件、免安装、纯绿色、仅160KB

一个减少多进程下python内存占用的小技巧

  在python中如果要使用fork或者multiprocess来做多进程,假如import的库很多或者很大,例如wxpython,查看各进程的内存占用你会发现两个进程的内存占用基本上相同,换句话说,如果第二个进程根本不需要用到wx的内容,它也会被加载到内存当中去。就拿wx来做例子,没有import t wx占用大概8M+内存,一旦import wx,内存马上飚升到27M+,如此一来,两个进程就要占50m+。以上数据这只是对一个很小的python程序而言,要是一个需要导入很多库文件的程序,那情况可就不一样了。
  经过几番尝试,笔者找到用__import__,在运行时再入库的方法。其实是非常简单的,例如以下例子:
from multiprocessing.managers import BaseManager
from multiprocessing import freeze_support
import os
class MyManager(BaseManager):
pass

global manager
if __name__ == '__main__':
freeze_support()
manager = MyManager()
switch = __import__("myclass",globals(),locals())
manager.register("C", myclass.C)
manager.start()
gui = __import__("mygui", globals(),locals())
mygui.manager = manager
app = mygui.MyApp(0)
app.MainLoop()
manager.shutdown()
os._exit(0)
这样就可以避免两个进程加载不必要的库而早成内存的浪费。


相关文档:

Python学习笔记 文件读写

Python中文件操作可以通过open函数,这的确很像C语言中的fopen。通过open函数获取一个file object,然后调用read(),write()等方法对文件进行读写操作。
1.open
使用open打开文件后一定要记得调用文件对象的close()方法。比如可以用try/finally语句来确保最后能关闭文件。
file_object = open('thefile.txt') ......

Python查找替换

>>> import string
>>> s='adbecf'
>>>
tt=string.maketrans("abc","ABC")
>>> s.translate(tt,"")
'AdBeCf'
>>>
s.translate(tt,"")
后面的那个空字符创就是你要删除的字符,比如要删除换行就是s.translate(tt,"\n&q ......

一篇不错的Python入门教程

原文
 http://www.hetland.org/python/instant-hacking.php
Instant Hacking[译
文]
译者: 肯定来过                                ......

Python 练习2

生成一个有N个元素的有随机整数n组成的列表,其中N和年的取值范围是(1<N<=5)
和(0<=n<100),显示这个列表的所有子集。
N个数字空有2en个子集,对于这N个数字在每个子集中来讲要么存在要么不存在,可以采用子集映射为2进制的算法。
例如[a,b]集合的子集:
空      ---- &nb ......

Python日期和字符串的互转

用的分别是time和datetime函数
'''
Created on 2009-9-2
@author: jiangqh
'''
import time,datetime
# date to str
print time.strftime("%Y-%m-%d %X", time.localtime())
#str to date
t = time.strptime("2009 - 08 - 08", "%Y - %m - %d")
y,m,d = t[0:3]
print datetime.datetime(y,m,d)

输出当前时间 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号