直接执行这两个命令即可: sudo update-alternatives --install /usr/bin/python python /usr/bin/...
9 【案例】创建1个进程执⾏任务 python中的多线程其实并不是真正的多线程,如果想要充分地使⽤多核CPU的资源,在python中 ⼤部分情况需要使⽤多进程,尤其是密集型计算任务 import multiprocessing...:", p.pid) print("p.name:", p.name) print("p.is_alive:", p.is_alive()) 10 【案例】创建3个进程并⾏执⾏任务 将⼀个任务拆分为...⽐如,在利⽤Python进⾏系统管理的时候,特别是同时操作多个⽂件⽬录,或者远程控制多台主 机,并⾏操作可以节约⼤量的时间。...协程,是运⾏在单个线程中的”并发“ 协程与多线程相⽐,有哪些优势?...如下所示,共使⽤以下模块: import datetime import asyncio import aiohttp 使⽤ async 创建协程 crawler_url ,它的第⼀个参数是客户端的session
当Python解析器读源代码文件时,会做如下两件事情: 设置特殊变量,如__name__; 执行源代码文件中的所有代码; 现在我们将焦点放到__name__变量上来,看看在Python程序中为什么要使用...python foo.py Python解释器会使用下面的代码为__name__变量赋值,也就是说,__name__变量的值是"__main__"。...这意味着在主程序中会有如下的语句: import foo Python解释器将搜索foo.py文件(以及搜索其他一些变体),在执行该模块之前,它将从import语句中将名称“ foo”分配给__name...__name__ = "foo" 设置__name__变量后,Python解释器通过一次执行一条语句的方式执行模块中的所有代码。...module 如果一个Python脚本,同时即可以作为主程序执行,也可以作为模块被导入,这就要求在模块被导入时不执行作为主程序执行时的代码,所以如果是在主程序中执行的代码,应该使用__main__变量进行判断
,效率更高,而且特性比较多,也就非常的灵活;比如pytest常用的特性有:① 对case可以进行设置跳过,也可以进行标记(比如失败等);② 可以重复执行失败的case;③ 可以兼容执行unittest编写的...,目前最新版本的pytest需要Python在3.8及以上版本。...__ == "__main__": pytest.main(["-s", "test_set_tear.py"])# 输出为:# setup_module:整个.py模块开始前只执行一次# setup_function...__ == "__main__": pytest.main(["-s", "test_assert.py"])# 输出为:# test_assert.py...特性pytest可自定义标记,即进行mark;作用是把一个大项目自动化用例,划分多个模块,标明哪些是模块A用例,哪些是模块B的,运行代码时候指定mark名称运行就可以;使用方法为:@pytest.mark
() """ # 定义测试类,父类为unittest.TestCase class TestDemo(unittest.TestCase): # 每个测试方法运行前执行 def setUp...__ == '__main__': unittest.main(verbosity=2) 2、执行test_Case1.py文件,运行结果: unittest.main()方法会搜索该模块下所有以...() """ # 定义测试类,父类为unittest.TestCase class TestDemo(unittest.TestCase): # 每个测试方法运行前执行 def setUp...() """ # 定义测试类,父类为unittest.TestCase class TestDemo(unittest.TestCase): # 每个测试方法运行前执行 def setUp.../usr/bin/env python # -*- coding: utf-8 -*- # 导入unittest模块 import unittest """ 结果输出到文件 """ # 定义测试类,父类为
⽤计数以及Python中的GC阈值,这一节我们将继续介绍GC模块的一些应用和注意事项,下面开始今天的讲解~~ 一、垃圾回收机制 Python中的垃圾回收是以引⽤计数为主,分代收集为辅。...在del c1后,内存1的对象的引⽤计数变为1,由于不是为0,所以内存1的对象不会被销毁,所以内存2的对象的引⽤数依然是2,在del c2后, 同理,内存1的对象,内存2的对象的引⽤数都是1。...垃圾回收 print("-----4------") print(gc.garbage) print("-----5------") if __name__ == '__main...程序退出的时候 四、gc模块常⽤功能解析 gc模块提供⼀个接⼝给开发者设置垃圾回收的选项 。...上⾯说到,采⽤引⽤计数的⽅法管理内存的⼀个缺陷是循环引⽤,⽽gc模块的⼀个主要功能就是解决循环引⽤的问题。
(self): print("用例3") def test_fo(self): print("用例4")if __name__ == "__main__": pytest.main...__ == "__main__": pytest.main()运行结果为:(venv) F:\pytest_study\test_case\test_c>pytest -s -q test_setup_teardoen_class.py...__ == "__main__": pytest.main()运行结果为:(venv) F:\pytest_study\test_case\test_c>pytest -s -q test_pytest_setup_teardown_method.py...整个.py模块开始前只执行一次用例1.用例2.整个测试类开始前只执行一次1类里面每个用例执行前都会执行用例3.1类里面每个用例结束后都会执行1类里面每个用例执行前都会执行用例4.1类里面每个用例结束后都会执行整个测试类结束后只执行一次整个...3.teardown:类里面每个用例结束后都会执行teardown_method:类里面每个用例结束后都会执行setup_method:类里面每个用例执行前都会执行setup:类里面每个用例执行前都会执行用例
使用pprint()友好输出 以主程序的方式运行 if __name__='__main__': ......在我们导入模块时,有可能在被导入模块的主程序中有其他的代码,但是在我们调用该模块时就可以检查一下__name__变量,如果该变量的值为__main__。则说明该模块并不是以被调用的模块来执行。...: ERROR:程序在某些状态将引发错误的缘由 CRITICAL:显示让整个系统当掉或者中断的错误 在Python的默认显示中,只显示Warning及以上的层级 调整打印信息的层级 可以通过logging.basicConfig...(level=logging.DEBUG)来只显示不低于DEBUG层级的信息(如果设置为最高层级,那么就不会输出日志文件) 可以通过logging.disable(level)停用level以下的所有层级...() if __name__ == '__main__': import doctest doctest.testmod() # 在命令行窗口输入:python test_cap.py
此篇为深入理解进程第一篇,下面开始今天的说明~~~ 多任务的引入 现实生活中 有很多的场景中的事情是同时进⾏的,⽐如开⻋的时候⼿和脚共同来驾驶汽⻋,再⽐如唱歌跳舞也是同时进⾏的; 如下视频是:迈克杰克逊的...%d"%i) sleep(1) if __name__ == '__main__': sing()#唱歌 dance()#跳舞 运行结果如下: !!!...表⾯上看,每个任务都是交替执⾏的,但是,由于CPU的执⾏速度实在是太快了,我们感觉就像所有任务都在同时执⾏⼀样。...真正的并⾏执⾏多任务只能在多核CPU上实现,但是,由于任务数量远远多 于CPU的核⼼数量,所以,操作系统也会⾃动把很多任务轮流调度到每个核⼼上执⾏。 进程的创建-fork 1....2. fork( ) Python的os模块封装了常⻅的系统调⽤,其中就包括fork,可以在Python程 序中轻松创建⼦进程: import os # 注意:fork函数,只在Unix/Linux/
4.线性测试实例:用户登录 (2)模块化驱动测试 1、概念: 将重复的操作独立成功共模块,当用例执行过程中需要用到这一模块操作时则被调用。 操作+(重复操作,数据)混合在一起。...在Runner执行时,默认将执行结果输出到控制台,我们可以设置其输出到文件,在文件中查看结果。...: if __name__ == "__main__": unittest.main(verbosity=2) # 输出详细的错误报告 在unittest.main()中加参数verbosity...生成TXT测试报告 代码示例: if __name__ == "__main__": suite = unittest.TestSuite() # 生成.txt的测试报告(控制台的输出写入到文件中...: --stream:测试报告写入文件的存储区域 --title:测试报告的主题 --description:测试报告的描述 代码示例: if __name__ == "__main__": suite
f来说,装饰器能够在f函数执行前或者执行后分别运行一些代码。...使用printStar: @printStar def f(): print('hello world') 调用: if __name__ == '__main__': ### 改变函数功能...使用装饰器singleton修饰类: @singleton class CorePoint: pass 测试: if __name__ == '__main__': ### 改变类的功能...: print('hello world') 此时再调用函数f: if __name__ == '__main__': ### 改变函数功能 f() 打印结果: **********...7 温馨提醒 打印原函数f的名字__name__,结果为f In [1]: def f(): ...: pass In [4]: f.
单元测试负责最小的软件设计单元进行验证,unittest框架(原名PyUnit框架)为python自带的单元测试框架。...分析上面代码,首先我们引入了unittest库,创建了MyTestCase类并且继承了unittest中TestCase类我们可以将TestCase看作测试类集合 setUp()方法用于用例执行前初始化工作...tearDown()方法与setUp()方法作用相反,用于测试结束收尾工作 test_something()我们执行的步骤卸载这里面 assertEqual()断言2则是否相等 main() 使用它可以方便于地将一个单元测试模块直接运行的测试脚本...setUp、执行过程(类型与test_something)、tearDown,一个用例就是一个完整的单元测试 2. test suite 可以理解为把多个测试用例集成起来 3. test runner执行测试用例...从执行结果可以看到,setUp/tearDown用于测试执行前执行后。
如果为False则显示需要参考来激活fixtureundefined ids :每个字符串id的列表,每个字符串对应于params这样他们就是测试ID的一部分。...如果fixture在定义它的统一模块中使用,夹具的功能名称将被请求夹具的功能arg遮蔽,解决这个问题的一种方法时将装饰函数命令fixture_然后使用@pytest.fixture...scope参数为session:所有测试.py文件执行前执行一次undefined scope参数为module:每一个测试.py文件执行前都会执行一次conftest文件中的fixtureundefined...scope参数为class:每一个测试文件中的测试类执行前都会执行一次conftest文件中的undefined scope参数为function:所有文件的测试用例执行前都会执行一次conftest...__=="__main__": pytest.main(["-s","test02.py","test03.py"]) "C:\Program Files\Python35\python.exe
如果为False则显示需要参考来激活fixture ids:每个字符串id的列表,每个字符串对应于params这样他们就是测试ID的一部分。...如果fixture在定义它的统一模块中使用,夹具的功能名称将被请求夹具的功能arg遮蔽,解决这个问题的一种方法时将装饰函数命令"fixture_"然后使用"@pytest.fixture...conftest中fixture的scope参数为session,所有测试.py文件执行前执行一次 conftest中fixture的scope参数为module,每一个测试.py文件执行前都会执行一次...conftest文件中的fixture conftest中fixture的scope参数为class,每一个测试文件中的测试类执行前都会执行一次conftest文件中的fixture conftest中...fixture的scope参数为function,所有文件的测试用例执行前都会执行一次conftest文件中的fixture 三、conftest应用场景 1、每个接口用例需共用到的token 2、每个接口用例需共用到的测试用例数据
在新创建的子进程中,会把父进程的所有信息复制一份,它们之间的数据互不影响。1.使用os.fork()创建该方式只能用于Unix/Linux操作系统中,在windows不能用。...import os# 注意,fork函数,只在Unix/Linux/Mac上运行,windows不可以pid = os.fork()# 子进程永远返回0,而父进程返回子进程的ID。...if pid == 0: print('子进程')else: print('父进程')2.使用Process类类创建multiprocessing模块提供了一个Process类来代表一个进程对象...__ == '__main__': p = Process(target=test, args=("aaa", 18)) p.start() # 等待进程实例执⾏结束,或等待多少秒;...multiprocessing中的Process动态成生多个进程,但如果是上百甚至上千个目标,手动的去创建进程的工作量巨大,此时就可以用到multiprocessing模块提供的Pool方法。
实际上,在单CPU的系统中,真正的并发是不可能的,每个线程会被安排成每次只运行 一会,然后就把CPU让出来,让其它的线程去运行。...其次,低级别的 thread 模块的同步原语很少(实际上只有一个),而 threading 模块则有很多。...如果你设定一个线程为守护线程,就 表示你在说这个线程是不重要的,在进程退出的时候,不用等待这个线程退出。就像你在第16 章网络编程看到的,服务器线程运行在一个无限循环中,一般不会退出。...() 返回当前线程对象 enumerate() 返回当前活动线程的列表 settrace(func) 为所有线程设置一个跟踪函数 setprofile(func) 为所有线程设置一个profile函数...Queue模块可以用来解决生产者-消费者问题,让各个线程之间通信,所用到的属性如下: 函数 描述 Queue模块函数 queue(size) 创建一个大小为size的Queue对象 Queue对象函数
Unittest setup前置初始化和teardown后置操作针对类中每个函数执行时进行前置后置的操作 setUp(self):测试前的初始化操作tearDown(self):测试后的操作代码示例:import...unittest # 导入unittest模块class test_case(unittest.TestCase): # 集成TestCase类 def setUp(self):...self): print("我是case: test_bbb") def test_ccc(self): print("我是case: test_ccc")if __name...__ == '__main__': unittest.main()针对整个类进行前置后置的操作setUpClass(cls):测试前的初始化操作tearDownClass(cls):测试后的操作import...__ == '__main__': unittest.main()图片执行结果:图片
以一定的速度移动小球,当小球碰到游戏窗口的边缘时,小球弹回,继续运动按照如下步骤实现该功能: 创建游戏窗口 1. 创建一个游戏窗口,宽和高设置为640*480。...如果将ball这个Surface对象画到screen Surface 对象,需要使用blit()方法,最后使用display模块的flip()方法更新整个待显示的Surface对象到屏幕上。...Surface对象的常用方法 方法名 功能 pygame.Surface.blit() 将一个图像画到另一个图像上 pygame.Surface.convert() 转换图像的像素格式 pygame.Surface.convert_alpha...运行上述代码看似有很多球,这是因为运行上述代码的时间非常短,运行快的错觉,使用pygame的time模块,使用pygame时钟之前,必须先创建Clock对象的一个实例,然后在while循环中设置多长时间运行一次...() # 更新整个待显示的Surface对象到屏幕上 if __name__ =
测试用例001") class TestFixtures02(unittest.TestCase): def test_002(self): print("测试类2") # 每个模块执行前执行...>>>>>>>>>>>>>开始') def tearDownModule(): print("集成测试 >>>>>>>>>>>>>>结束") if __name__ == '__main_...首先了解一下,用例运行前后置级别如下: 1.模块级:全局的,整个模块开只运行一次,优先于测试用例。 2.类级别:定义在类里面,只针对此类生效。...print("测试用例2") def test_three(open_page): print("测试用例3") 运行结果: 细心的人应该可以知道,测试用例2并没有调用login函数,因为前置设置的是共享模式...__ == '__main__': unittest.main() 运行结果: 2.pytest中参数化的用法 在测试用例的前面加上: @pytest.mark.parametrize("参数名
一个测试用例是一个完整的测试单元,通过运行这个测试单元,可以对某一个功能进行验证 unittest.main():使用她可以方便的将一个单元测试模块变为可直接运行的测试脚本,main()方法使用TestLoader...类来搜索所有包含在该模块中以“test”命名开头的测试方法,并自动执行他们。...执行方法的默认顺序是:根据ASCII码的顺序加载测试用例,数字与字母的顺序为:0-9,A-Z,a-z。...所以以A开头的测试用例方法会优先执行,以a开头会后执行 一、setUp()和tearDown()函数 setUp()函数是在众多函数或说是在一个类里最先被调用的函数,每执行完一个函数都要从setUp...,最后执行的后置tearDown 3、setUp():setUp()方法用于测试用例执行前初始化工作。
领取专属 10元无门槛券
手把手带您无忧上云