gpt4 book ai didi

Python程序完成后不会退出

转载 作者:IT王子 更新时间:2023-10-29 00:50:39 24 4
gpt4 key购买 nike

我有以下脚本 186.py:

S=[]
study=set([524287])

tmax=10**7
D={}
DF={}
dudcount=0
callcount=0

def matchval(t1,t2):
if t1==t2:
global dudcount
dudcount+=1
else:
global callcount
callcount+=1
D.setdefault(t1,set([]))
D.setdefault(t2,set([]))
D[t1].add(t2)
if t1 in D[t2]:
DF.setdefault(t1,set([]))
DF[t1].add(t2)
DF.setdefault(t2,set([]))
DF[t2].add(t1)

for k in xrange(27):
t1=(100003 - 200003*(2*k+1) + 300007*(2*k+1)**3)%(1000000)
S.append(t1)
t2=(100003 - 200003*(2*k+2) + 300007*(2*k+2)**3)%(1000000)
S.append(t2)
matchval(t1,t2)

t1=(100003 - 200003*(55) + 300007*(55)**3)%(1000000)
S.append(t1)
t2=(S[31]+S.pop(0))%(1000000)
S.append(t2)
matchval(t1,t2)

for k in xrange(29,tmax+1):
t1=(S[31]+S.pop(0))%(1000000)
S.append(t1)

t2=(S[31]+S.pop(0))%(1000000)
S.append(t2)
matchval(t1,t2)

D.setdefault(524287,set([]))
DF.setdefault(524287,set([]))
print D[524287]
print DF[524287]
print dudcount,callcount
print "Done"

最后一行打印“Done”,但发生这种情况时 python 不会退出。我输入以下命令:

$ time python 186.py

并得到结果:

set([810528L, 582178L, 49419L, 214483L, 974071L, 651738L, 199163L, 193791L])
set([])
11 9999989
Done

但我必须按 ctrl+C 才能获取时间:

real    34m18.642s
user 2m26.465s
sys 0m11.645s

在程序输出“Done”之后,python CPU 使用率非常低......但是内存使用率继续增长......一旦它达到我系统内存的 80%(它是一个旧系统),我就使用了 ctrl+C .

这是怎么回事?打印完成后程序在做什么?不应该做吗?

谢谢,丹

最佳答案

我在配备 2GB RAM 的 2 GHz 双核笔记本电脑上运行相同的代码,在 Cygwin 中花费了大约 1.5 分钟。在程序退出之前内存使用量超过 600 MB,在 Done 出现提示和释放内存后大约需要 2-4 秒。但是,在 Done 出现后,我没有看到任何内存增加。

我猜它与内存管理有关。在 Done 出现后,Python 正在努力释放所有内存,这在 RAM 较少的旧机器上可能需要相当长的时间。我不确定为什么内存实际上会增加,除非只是延迟告诉您正在使用多少内存。

关于Python程序完成后不会退出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2412715/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com