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 多线程详解

Python-logging详解(彩色日志扩展,多进程安全等)

Python-logging详解(彩色日志扩展,多进程安全等)

python多进程详解

[Python3] 043 多线程 简介

python多进程实例详解