python检测周末函数 python星期函数怎么用

7种检测Python程序运行时间、CPU和内存占用的方法

1. 使用装饰器来衡量函数执行时间

10年积累的网站制作、成都网站设计经验,可以快速应对客户对网站的新想法和需求。提供各种问题对应的解决方案。让选择我们的客户得到更好、更有力的网络服务。我虽然不认识你,你也不认识我。但先建设网站后付款的网站建设流程,更有新会免费网站建设让你可以放心的选择与我们合作。

有一个简单方法,那就是定义一个装饰器来测量函数的执行时间,并输出结果:

import time

from functoolsimport wraps

import random

def fn_timer(function):

@wraps(function)

def function_timer(*args, **kwargs):

  t0= time.time()

  result= function(*args, **kwargs)

  t1= time.time()

  print("Total time running %s: %s seconds" %

      (function.__name__, str(t1- t0))

)

  return result

return function_timer

@fn_timer

def random_sort(n):

return sorted([random.random() for i in range(n)])

if __name__== "__main__":

random_sort(2000000)

输出:Total time running random_sort: 0.6598007678985596 seconds

使用方式的话,就是在要监控的函数定义上面加上 @fn_timer 就行了

或者

# 可监控程序运行时间

import time

import random

def clock(func):

def wrapper(*args, **kwargs):

    start_time= time.time()

    result= func(*args, **kwargs)

    end_time= time.time()

    print("共耗时: %s秒" % round(end_time- start_time, 5))

    return result

return wrapper

@clock

def random_sort(n):

return sorted([random.random() for i in range(n)])

if __name__== "__main__":

random_sort(2000000)

输出结果:共耗时: 0.65634秒

2. 使用timeit模块

另一种方法是使用timeit模块,用来计算平均时间消耗。

执行下面的脚本可以运行该模块。

这里的timing_functions是Python脚本文件名称。

在输出的末尾,可以看到以下结果:4 loops, best of 5: 2.08 sec per loop

这表示测试了4次,平均每次测试重复5次,最好的测试结果是2.08秒。

如果不指定测试或重复次数,默认值为10次测试,每次重复5次。

3. 使用Unix系统中的time命令

然而,装饰器和timeit都是基于Python的。在外部环境测试Python时,unix time实用工具就非常有用。

运行time实用工具:

输出结果为:

Total time running random_sort: 1.3931210041 seconds

real 1.49

user 1.40

sys 0.08

第一行来自预定义的装饰器,其他三行为:

real表示的是执行脚本的总时间

user表示的是执行脚本消耗的CPU时间。

sys表示的是执行内核函数消耗的时间。

注意:根据维基百科的定义,内核是一个计算机程序,用来管理软件的输入输出,并将其翻译成CPU和其他计算机中的电子设备能够执行的数据处理指令。

因此,Real执行时间和User+Sys执行时间的差就是消耗在输入/输出和系统执行其他任务时消耗的时间。

4. 使用cProfile模块

5. 使用line_profiler模块

6. 使用memory_profiler模块

7. 使用guppy包

python中怎么判断函数是否可以调用

Python: 测试函数是否被调用

# helper class defined elsewhere

class CallLogger(object):

def __init__(self, meth):

self.meth = meth

self.was_called = False

def __call__(self, code=None):

self.meth()

self.was_called = True

然后assert CallLogger的was_called为True就行了。但是这样的Callable不是个函数:

isinstance(object, types.FunctionType) # Callable will be False

对于这种Callable获取参数个数需要用:

inspect.getargspec(fn.__call__)

怎样用python3.4编程判断函数,例如奇偶函数的判断,主要是自己能够任意输入函数,让pytho

i = input('Input number: ')

if int(i) % 2 == 1:

print('奇数')

else:

print('偶数')

如何使用python编写测试脚本

1)doctest

使用doctest是一种类似于命令行尝试的方式,用法很简单,如下

复制代码代码如下:

def f(n):

"""

f(1)

1

f(2)

2

"""

print(n)

if __name__ == '__main__':

import doctest

doctest.testmod()

应该来说是足够简单了,另外还有一种方式doctest.testfile(filename),就是把命令行的方式放在文件里进行测试。

2)unittest

unittest历史悠久,最早可以追溯到上世纪七八十年代了,C++,Java里也都有类似的实现,Python里的实现很简单。

unittest在python里主要的实现方式是TestCase,TestSuite。用法还是例子起步。

复制代码代码如下:

from widget import Widget

import unittest

# 执行测试的类

class WidgetTestCase(unittest.TestCase):

def setUp(self):

self.widget = Widget()

def tearDown(self):

self.widget.dispose()

self.widget = None

def testSize(self):

self.assertEqual(self.widget.getSize(), (40, 40))

def testResize(self):

self.widget.resize(100, 100)

self.assertEqual(self.widget.getSize(), (100, 100))

# 测试

if __name__ == "__main__":

# 构造测试集

suite = unittest.TestSuite()

suite.addTest(WidgetTestCase("testSize"))

suite.addTest(WidgetTestCase("testResize"))

# 执行测试

runner = unittest.TextTestRunner()

runner.run(suite)

简单的说,1构造TestCase(测试用例),其中的setup和teardown负责预处理和善后工作。2构造测试集,添加用例3执行测试需要说明的是测试方法,在Python中有N多测试函数,主要的有:

TestCase.assert_(expr[, msg])

TestCase.failUnless(expr[, msg])

TestCase.assertTrue(expr[, msg])

TestCase.assertEqual(first, second[, msg])

TestCase.failUnlessEqual(first, second[, msg])

TestCase.assertNotEqual(first, second[, msg])

TestCase.failIfEqual(first, second[, msg])

TestCase.assertAlmostEqual(first, second[, places[, msg]])

TestCase.failUnlessAlmostEqual(first, second[, places[, msg]])

TestCase.assertNotAlmostEqual(first, second[, places[, msg]])

TestCase.failIfAlmostEqual(first, second[, places[, msg]])

TestCase.assertRaises(exception, callable, ...)

TestCase.failUnlessRaises(exception, callable, ...)

TestCase.failIf(expr[, msg])

TestCase.assertFalse(expr[, msg])

TestCase.fail([msg])

Python 几个重要的内置函数

在学习Python的过程中,有几个比较重要的内置函数:help()函数、dir()函数、input()与raw_input()函数、print()函数、type()函数。

第一、help()函数

Help()函数的参数分为两种:如果传一个字符串做参数的话,它会自动搜索以这个字符串命名的模块、方法等;如果传入的是一个对象,就会显示这个对象的类型的帮助。比如输入help(‘print’),它就会寻找以‘print’为名的模块、类等,找不到就会看到提示信息;而print在Python里是一个保留字,和pass、return同等,而非对象,所以help(print)也会报错。

第二、dir()函数

dir()函数返回任意对象的属性和方法列表,包含模块对象、函数对象、字符串对象、列表对象、字典对象等。尽管查找和导入模块相对容易,但是记住每个模块包含什么却不是这么简单,您并不希望总是必须查看源代码来找出答案。Python提供了一种方法,可以使用内置的dir()函数来检查模块的内容,当你为dir()提供一个模块名的时候,它返回模块定义的属性列表。dir()函数适用于所有对象的类型,包含字符串、整数、列表、元组、字典、函数、定制类、类实例和类方法。

第三、input与raw_input函数

都是用于读取用户输入的,不同的是input()函数期望用户输入的是一个有效的表达式,而raw_input()函数是将用户的输入包装成一个字符串。

第四、Print()函数

Print在Python3版本之间是作为Python语句使用的,在Python3里print是作为函数使用的。

第五、type()函数

Type()函数返回任意对象的数据类型。在types模块中列出了可能的数据类型,这对于处理多种数据类型的函数非常有用,它通过返回类型对象来做到这一点,可以将这个类型对象与types模块中定义类型相比较。


文章名称:python检测周末函数 python星期函数怎么用
网页链接:http://myzitong.com/article/hpeese.html