Process类参数介绍
私信小编007 即可获取数十套PDF哦!
进程之间不共享全局变量
创建子进程其实就是对主进程资源的拷贝
主进程会等待所有的子进程执行完成程序再退出
总结: 主进程会等待所有的子进程执行完成程序再退出
获取进程pid
运行结果:
当前进程编号: 624我在主进程中执行...
我在主进程中执行...
我在主进程中执行...
我在主进程中执行...
我在主进程中执行...
我在主进程中执行...
我在主进程中执行...
我在主进程中执行...
我在主进程中执行...
我在主进程中执行...
我在主进程中执行...
work进程编号: 1312work父进程编号: 624工作中...
工作中...
工作中...
工作中...
工作中...
工作中...
工作中...
工作中...
工作中...
工作中...
我在主进程中执行...
我在主进程中执行...
我在主进程中执行...
我在主进程中执行...
我在主进程中执行...
我在主进程中执行...
我在主进程中执行...
我在主进程中执行...
我在主进程中执行...
***Repl Closed***
进程间通信——Queue
可以使用multiprocessing模块Queue实现多进程之间的数据传递,Queue本身是一个消息队列程序
消息队列Queue完成进程间通信的演练
进程池Pool
进程池的概念
池子里面放的是进程,进程池会根据任务执行情况自动创建进程,而且尽量少创建进程,合理利用进程池中的进程完成多任务
当需要创建的子进程数量不多时,可以直接利用multiprocess中的Process动态生成多个进程,但如果是上百甚至上千个目标,手动的去创建进程的工作量巨大,此时就可以用到multiprocess模块提供的Pool方法。
初始化Pool时,可以指定一个最大进程数,当有新的请求提到Pool中时,如果池还没有满,那么就会创建一个新的进程用来执行该请求,但如果池中的进程数已经达到指定的最大值,那么该请求就会等待,直到池中有进程结束,才会用之前的进程来执行新的任务。
进程池同步执行任务
进程池同步执行任务表示进程池中的进程在执行任务的时候一个执行完成另外一个才能执行,如果没有执行完会等待上一个进程执行
进程池同步实例代码
进程池异步执行任务
进程池异步执行任务表示进程池中的进程同时执行任务,进程之间不会等待
进程池异步实例代码
运行结果:
复制中... 1848复制中... 12684复制中... 12684复制中... 6836复制中... 6836***Repl Closed***
协程的概念
协程,又称微线程,纤程,也称用户级线程,在不开辟线程的基础上实现多任务,也就是在单线程的情况下完成多任务,多个任务按照一定顺序交替执行的,通俗理解只要在def里面只看到一个yield关键字表示就是协程
协程也是实现多任务的一种方式
协程yield的代码实现
简单实现协程
实现协程的第二种方式:greenlet
greenlet介绍:为了更好使用协程来完成多任务,python中的greenlet模块对其封装,从而使得切换任务变得更加简单
首先使用pip安装greenlet模块:
pip3 install greenlet
greenlet的使用:
IP、UDP
UDP
概念:英文全拼(User Datagram Protocol)简称用户数据报协议,它是无连接的、不可靠的网络传输协议
面向无连接型:无需确认对端是否存在,发送端可随时发送数据(udp网络传输协议好比现实生活中写信)
UDP特点:
无连接、资源开销小、传输速度快、UDP每个数据包最大是64K
UDP优点:
传输速度快
不需要连接,资源开销小
UDP缺点:
传输数据不可靠,容易丢失数据包
没有流量控制,当对方没有及时接收数据,发送方一直发送数据会导致缓冲区数据满了,电脑出现卡死情况,所以接收方需要及时接收数据