python大数字计算时没有响应_linux-为什么在尝试计算非常大的数字时Python会“抢先”挂起?...

在杀死一个使用过多内存的进程之前,我已经问过这个问题,并且我已经解决了大部分问题。

但是,存在一个问题:我尝试使用的方法似乎无法计算大量数字。 下面的这段代码旨在为该进程设置10秒的CPU时间限制。

import resource

import os

import signal

def timeRanOut(n, stack):

raise SystemExit('ran out of time!')

signal.signal(signal.SIGXCPU, timeRanOut)

soft,hard = resource.getrlimit(resource.RLIMIT_CPU)

print(soft,hard)

resource.setrlimit(resource.RLIMIT_CPU, (10, 100))

y = 10**(10**10)

在运行此脚本(在Unix计算机上)时,我希望看到的是:

-1 -1

ran out of time!

相反,我没有输出。 我获得输出的唯一方法是使用Ctrl + C,如果在10秒钟后按Ctrl + C,我将获得此输出:

^C-1 -1

ran out of time!

CPU time limit exceeded

如果我在10秒之前按Ctrl + C,则必须执行两次,控制台输出如下所示:

^C-1 -1

^CTraceback (most recent call last):

File "procLimitTest.py", line 18, in

y = 10**(10**10)

KeyboardInterrupt

在尝试并尝试解决这一问题的过程中,我还将Linux web455.webfaction.com 2.6.32-431.29.2.el6.x86_64 #1 SMP Tue Sep 9 21:36:05 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux放入打印和大数计算之间。 它似乎没有任何作用。 如果将y = 10**(10**10)更改为y = 10**10,则print和sleep语句将按预期工作。 在打印语句中添加flush=True或在打印语句后添加sys.stdout.flush()也不起作用。

为什么不能限制CPU时间来计算非常大的数字? 如何解决或至少减轻这种情况?

附加信息:

python版本:Linux web455.webfaction.com 2.6.32-431.29.2.el6.x86_64 #1 SMP Tue Sep 9 21:36:05 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux

Linux信息:Linux web455.webfaction.com 2.6.32-431.29.2.el6.x86_64 #1 SMP Tue Sep 9 21:36:05 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值