Python连载37-多进程、进程子类、进程父子id
2019-09-13 00:29
1691 查看
一、线程替代方案
1.subprocess
(1)完全跳过线程,使用进程
(2)是派生进程的主要替代方案
(3)python2.4后引入
2.multiprocessing
(1)使用threading接口派生,使用子进程
(2)允许为多核或者多CPU派生进程,接口很threading非常相似
(3)python2.6
3.concurrent.futures
(1)新的异步执行模块
(2)人物级别的操作
(3)python3.2之后引入
4.多进程
(1)进程间通讯(InterprocessCommunication,IPC)
(2)进程之间无任何共享状态
(3)进程的创建
i.直接生成Process实例对象,举例
import multiprocessing from time import sleep,ctime def clock(interval): while True: print("The time is %s" % ctime()) sleep(interval) if __name__ == "__main__": p = multiprocessing.Process(target= clock,args=(2,)) p.start() #从运行就可以看出来主进程已经结束了,但是子线程仍然在运行着 #和我们之前讲的线程,有一个最大区别就是线程在主进程里面,主进程结束了,子线程就结束了 #子线程从属于进程,子进程与进程之间是并列关系 #这里的程序停止,是我手动停止的
ii.派生子类
举例:重写子类,和我们之前讲的线程的差不多,这里民重写了最重要的两个函数,一个是初始化子类,继承父类的初始化,第二个就是运行函数
class ClockProcess(multiprocessing.Process): def __init__(self,interval): super().__init__() self.interval = interval def run(self): while True: print("The time is {0}".format(ctime())) sleep(self.interval) if __name__ == "__main__": p2 = ClockProcess(2) p2.start()
iii.在os中查看pid,ppid以及他们的关系
def info(title): print(title) print("module name:",__name__) #得到父进程的id print("parent process:",os.getppid()) #得到本身进程的id print("process id:",os.getpid()) def f(name): info("function f") print("hello",name) if __name__ == "__main__": info("main line") print("==================================") p = multiprocessing.Process(target=f,args=("bob",)) p.start() p.join()
解释:先调用了一个函数,然后又调用了一个嵌套函数的函数
四、源码
d26_1_multiprocess_exercise.py
https://github.com/ruigege66/Python_learning/blob/master/d26_1_multiprocess_exercise.py
2.CSDN:https://blog.csdn.net/weixin_44630050(心悦君兮君不知-睿)
3.博客园:https://www.cnblogs.com/ruigege0000/
4.欢迎关注微信公众号:傅里叶变换,个人公众号,仅用于学习交流,后台回复”礼包“,获取大数据学习资料
相关文章推荐
- python父子进程通过sockerpair通讯的实例
- python获取shell命令返回值;python获取进程ID,杀进程
- python网络编程基础(连载)05 多进程
- Python学习笔记(二十七)多进程 (进程和线程开始)
- Python 多进程 进程间通讯
- 编写一个程序,使用fork函数来创建一个子进程,并分别输出父子进程的进程ID
- 多进程(父子进程)中的管道通信
- python创建多进程(2)--用三个进程计算斐波那契数列
- python学习—Day41—多进程锁与多进程共享内存
- 【Python】[进程和线程]多进程,多线程,ThreadLocal,进程VS.线程,分布式进程
- python 简单搭建阻塞式单进程,多进程,多线程服务
- Python mutilprocessing Processing 父子进程共享文件对象?
- Python 进程,获取进程id( os.getpid() )
- python多进程、进程间通信、进程锁
- python学习笔记——多进程二 进程的退出
- 11.python并发入门(part10 多进程之间实现通信,以及进程之间的数据共享)
- Python多进程 - 实现多进程的几种方式
- Python之多进程、多线程、协程和分布式进程
- python的多线程与多进程介绍及多进程详解(调用multiprocessing组件)
- Python 多线程、多进程 (三)之 线程进程对比、多进程