码迷,mamicode.com
首页 > 编程语言 > 详细

python多进程详解

时间:2018-08-12 21:44:37      阅读:146      评论:0      收藏:0      [点我收藏+]

标签:start   cpu   span   from   ini   code   获取   相互   隔离   

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:\Users\xiajinqi\PycharmProjects\Atm\venv\Scripts\python.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:\Users\xiajinqi\PycharmProjects\Atm\venv\Scripts\python.exe E:/Users/xiajinqi/PycharmProjects/Atm/333.py
[克隆Q]

Process finished with exit code 0

 

python多进程详解

标签:start   cpu   span   from   ini   code   获取   相互   隔离   

原文地址:https://www.cnblogs.com/xiajq/p/9464192.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!