04python学习

---恢复内容开始---

生成器--yield

yield将函数变成了一个迭代器,或生成器。

try、except应用

尝试执行try中的代码,如果有错,则会被except捕获,但是整个程序不会崩溃。

不定长参数

你可能需要一个函数能处理比当初声明时更多的参数。这些参数叫做不定长参数,和上述 2 种参数不同,声明时不会命名。加了星号 * 的参数会以元组(tuple)的形式导入,存放所有未命名的变量参数。加了两个星号 ** 的参数会以字典的形式导入。*args一定要放在前面。

1.*args:位置传参,返回的是元组

2.**kwargs:带参数名的传参,返回的是字典

装饰器、不定长参数实例1:装饰器代参

装饰器、不定长参数2:写三个页面A、B、C,去检测IP是否频繁访问,如果是则不予访问返回404.

进程和线程

进程:进程就是操作系统中执行的一个程序,操作系统以进程为单位分配存储空间,每个进程都有自己的地址空间、数据栈以及其他用于跟踪进程执行的辅助数据,操作系统管理所有进程的执行,为它们合理的分配资源。进程可以通过fork或spawn的方式来创建新的进程来执行其他的任务,不过新的进程也有自己独立的内存空间,因此必须通过进程间通信机制(IPC,Inter-Process Communication)来实现数据共享,具体的方式包括管道、信号、套接字、共享内存区等。

线程:一个进程还可以拥有多个并发的执行线索,简单的说就是拥有多个可以获得CPU调度的执行单元,这就是所谓的线程。由于线程在同一个进程下,它们可以共享相同的上下文,因此相对于进程而言,线程间的信息共享和通信更加容易。

python中的多进程:Unix和Linux操作系统上提供了fork()系统调用来创建进程,调用fork()函数的是父进程,创建出的是子进程,子进程是父进程的一个拷贝,但是子进程拥有自己的PID。fork()函数非常特殊它会返回两次,父进程中可以通过fork()函数的返回值得到子进程的PID,而子进程中的返回值永远都是0。Python的os模块提供了fork()函数。由于Windows系统没有fork()调用,因此要实现跨平台的多进程编程,可以使用multiprocessing模块的Process类来创建子进程,而且该模块还提供了更高级的封装,例如批量启动进程的进程池(Pool)、用于进程间通信的队列(Queue)和管道(Pipe)等。

不使用多进程实例:

使用多进程实例:

由上述实例可见,多进程的方式更加合理更加有效率。

 

 

 

 

 

 

 

 

 

 

---恢复内容结束---

posted @ 2019-08-09 17:24  是你的小新新吖  阅读(136)  评论(0编辑  收藏  举报