社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

有没有一种方法可以在必要的情况下执行一个python脚本,并在每次执行时进行一致的填充?

pani3610 • 3 年前 • 1295 次点击  

我知道任何python程序的执行时间都取决于操作系统,不能由用户控制。但是我想要的是,如果执行时间低于必要的时间,程序就进入睡眠状态。

假设我有一个python程序,它的末尾有一个print语句。

def foo():
    ...
    ...
    return(ans)

print(foo())

我使用timeit评估了foo的执行时间范围。让时间从0.8秒到5.5秒。为了安全起见,我选择完整脚本的执行时间为10秒。

如果foo的执行在0.8秒内完成,我希望程序在print语句之前增加9.2秒的延迟。同样,如果执行在5.5秒内完成,则延迟为4.5秒。

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/129306
 
1295 次点击  
文章 [ 2 ]  |  最新文章 3 年前
Keith
Reply   •   1 楼
Keith    3 年前

你基本上只需要在最长时间和实际执行时间之间的差异中睡眠。你也可以做一个通用的装饰师。

class padtime:
    def __init__(self, maxtime):
        self.maxtime = float(maxtime)

    def __call__(self, f):
        def _f(*args, **kwargs):
            start = time.time()
            ret = f(*args, **kwargs)
            end = time.time()
            delay = self.maxtime - (end - start)
            if delay > 0.0:
                time.sleep(delay)
            return ret
        return _f

@padtime(9.5)
def foo():
    ...
    return("Answer")

这可以应用于任何函数。

BrokenBenchmark
Reply   •   2 楼
BrokenBenchmark    3 年前

你可以测量 foo() 用两个电话 time.time() 。然后,您可以使用计算的执行时间来计算暂停程序执行的时间量 foo() :

import time

def foo():
    ...

start_time = time.time()
foo()
end_time = time.time()
if end_time - start_time < 10:
    time.sleep(10 - (end_time - start_time))

注意,我们使用 time.sleep() 而不是 while 循环,反复检查是否经过了足够的时间 busy waiting wastes resources .