python多进程详解
Posted xiajq
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python多进程详解相关的知识,希望对你有一定的参考价值。
1、由于python多线程适合于多IO操作,但不适合于cpu计算型工作,这时候可以通过多进程实现。python多进程简单实用
# 多进程,可以cpu保持一致,python多线程适合多io.对于高cpu的可以通过多进程实现。 import multiprocessing import time def run(name): print(" %s process is running "%(name)) time.sleep(2) if __name__ == ‘__main__‘: for i in range(1, 10): process = multiprocessing.Process(target=run, args=(i,)) process.start()
2、python多进程。在操作系统中所有的进程都是有根进程(进程号0来创建的)。python获取主进程号和子进程号
# 多进程,可以cpu保持一致,python多线程适合多io.对于高cpu的可以通过多进程实现。 import multiprocessing import time import os def run(name): print(" %s process is running "%(name)) time.sleep(2) def info(name): print("%s"%(name)) print("当前进程号:%s"%(os.getpid())) print("父进程号:%s"%(os.getppid())) if __name__ == ‘__main__‘: info("parent process") process = multiprocessing.Process(target=info,args=("child process",)) process.start() E:UsersxiajinqiPycharmProjectsAtmvenvScriptspython.exe E:/Users/xiajinqi/PycharmProjects/Atm/333.py parent process 当前进程号:23420 父进程号:2372 child process 当前进程号:23468 父进程号:23420 Process finished with exit code 0
3、queue 实现进程通讯,进程Q要实现通讯。必须指明为进程Q。原理:在创建子进程时候,传递一个Q,实际相当于复制了一个新的Q给子进程。子进程向新的Q输入数据时候。进程Q通过一个反系列化实现将新的数据同步到旧的Q(即父进程Q)。两个程序之间内存是隔离的。Q也是相互独立的。
# 多进程,可以cpu保持一致,python多线程适合多io.对于高cpu的可以通过多进程实现。 from multiprocessing import Process,Queue # 只名为 进程Q import time import os qu = Queue() def test(qu): qu.put(["克隆Q"]) if __name__ == ‘__main__‘: process = Process(target=test,args=(qu,)) process.start() print(qu.get()) E:UsersxiajinqiPycharmProjectsAtmvenvScriptspython.exe E:/Users/xiajinqi/PycharmProjects/Atm/333.py [‘克隆Q‘] Process finished with exit code 0
以上是关于python多进程详解的主要内容,如果未能解决你的问题,请参考以下文章
Python-logging详解(彩色日志扩展,多进程安全等)