进程"已终止"

你好,
概述
=======
我正在做一些简单的文件操作工作,并且该过程得到
每次我跑步时都会杀死.没有追溯,没有segfault ...只是
在bash壳中"杀死"一词,过程结束.前几个
批处理运行只会在处理一个或两个文件中成功
(在60个中)在"杀死"过程之前.现在没有
成功的进步.然后进行一点处理,然后"杀死".
问题
=======
有任何想法吗?是否有缓冲限制?你认为可能是
文件系统?
任何建议都赞赏....谢谢.
我正在运行的代码:
=================
从全球进口全球
def manipfiles():
filepathlist = glog('/data/ascii/*.dat')
对于FilePathlist中的FilePath:
f = open(filepath,'r')
线= f.Readlines()[2:]
f.close()
f = open(filepath,'w')
F.Writelines(线)
f.close()
打印文件
文件中的示例行:
================
#时间,AP,BP,AS,BS,价格,Vol,Size,Seq,Isuplast,Isupvol,
iScancel
1062993789 0 0 0 0 1022.75 1 1 0 1 0 0 0
1073883668 1120 1119.75 28 33 0 0 0 0 0 0 0 0 0
其他信息
========
- 文件大小从76 kb到146 MB不等
- 我正在Gentoo Linux操作系统上跑步
- 文件系统已分区和使用:XFS用于数据
存储库,reiser3用于其他所有内容.

# 回答1


迪特写道:
那不是Python的事情.在一个外壳中运行"睡眠60",然后"杀死-9"
在另一个外壳中的过程,您将收到相同的消息.
我知道我的共享网络主机有一个守护程序,可以处理该处理
消耗太多资源.
等一下.如果您多次运行此操作,它不会删除
第一个文件的前两行多次删除一些数据
你真的在乎吗?我希望你有备份...
如果那个dir很大,那可能会很慢.两者都是因为Glob会
在每个文件名上运行REGEXP,因为它将返回
每个匹配的文件.
如果您有python 2.5,则可以使用glob.iglob()而不是
glob.glob(),它返回迭代器而不是列表.
这将整个文件读为内存.更好的是,我敢打赌
在第一个被销毁之前,暂时复制列表对象.
这是无关的,但是"打印文件"只会说" <类型'file'>",
因为它是内置对象的名称,而您没有分配给它
(无论如何您都不应该).
实际上,如果您仅 *符合该准确的代码,它将几乎退出
立即,由于它可以进行导入,因此定义了一个函数,但没有
实际打电话给任何东西. ;-)
这个版本怎么样? (注意:未经测试)
进口地球
导入操作系统
def manipfiles():
#如果您没有Python 2.5,请改用" glob.glob".
filepaths = glob.iglob('/data/ascii/*.dat')
对于filepaths中的filepath:
打印filepath
fin = open(filepath,'rb')
fout = open(filepath +'.out','wb')
#丢弃两行
fin.next(); fin.next()
fout.writelines(FIN)
fin.close()
fout.close()
OS.Rename(filepath +'.Out',filepath)
我不知道它在CPU上会有多大的光线,但是它应该很少使用
记忆(除非您有SOM 我猜是非常长的线路).你可以
在块中编写一个刚刚使用的.read()和.write()的版本
另外,它暂时将" whywew.dat"复制到" whywhewhewher.dat.out",
如果已经存在" Whate.dat.out",它将盲目地覆盖它.
另外,如果这只是一个单声脚本,您应该使用
"尝试...最后"语句确保文件对象关闭(或,,
在Python 2.5中,"带有"语句).
-
# 回答2


Dieter 您的程序运行时是否检查了内存使用情况?您的
线= f.Readlines()[2:]
语句将几乎需要您最大文件的记忆的两倍.这个
可能是一个问题,具体取决于您的RAM以及在
同时.
如果要将内存使用量减少到几乎为零,请尝试从
文件并将所有除前两个都写成临时文件,然后
将临时文件重命名为原始文件:
导入操作系统
infile = open(filepath,'r')
OUTFILE = open(filepath +'.bak','w')
对于num,在枚举(流动)中排队:
如果num> = 2:
outfile.write(line)
infile.close()
outfile.close()
OS.Rename(filepath +'.bak',filepath)
格伦
# 回答3


Dieter 检查外壳中的各种限制可能很有趣.尝试
此命令:
Ulimit -A
可以在" BASH手册"页面中找到文档.限制包括
内存大小,CPU时间,打开文件描述符以及其他一些内容.
保罗
# 回答4


迪特写道:
" ulimit -a"怎么说?
# 回答5


格伦·哈钦斯(Glenn Hutchings)写道:
脚注:列表对象包含对字符串对象的引用,而不是
串本身.以上是临时创建两个列表对象,但是
实际文件内容仅存储一次.
# 回答6


我正在做一些简单的文件操作工作,并且该过程得到
这是当您的操作系统用完时,您会看到的行为
内存资源.内核发送9个信号.我很确定
如果您超过软限制,您的程序将随着记忆不足而流产
错误.
埃里克
# 回答7


在2008年8月30日星期六,上午11:07,埃里克·沃特曼(Eric Wertman) 这是当您的操作系统用完时,您会看到的行为
内存资源.内核发送9个信号.我很确定
如果您超过软限制,您的程序将随着记忆不足而流产
错误.
埃里克
埃里克(Eric),非常感谢您的回复.

标签: python

添加新评论