您的位置:首页 > 编程语言 > Python开发

Python 多进程基本语法

2018-01-03 18:15 246 查看
需求:    在有多线程的情况下,我们可以使用线程帮我们处理一些事情,但是在python这里 由于RSA锁的缘故,我们只能够用到一个cpu帮我们处理事情,一个cpu在处理多个线程时,是通过上下文的切换使我们产生幻觉,感觉他同时在处理多个线程,但是在这里cpu在进行上下问的切换也是要消耗cpu。cpu是处理计算的 如1+1的计算。io操作不占用cpu,io只做网络,磁盘,内存中读取数据。所以python多线程 不适合CPU密集操作行的任务,python更适合io密集型的任务。     方案:   这里可以使用进程,采取多进程的方式,可以使用到,多核的其他CPU,但是由于进程的原因,是不能共享数据的。     参数:   multiprocessing.Process(target=函数, args=('参数',)) #生成一个进程   注:Linux 每一个进程都是由父进程启动的。   注:每一个进程默认都有一个父进程。     多进程模板:
import multiprocessing
import time
def f(name):
time.sleep(2)
print('hello', name)

if __name__ == '__main__':

# 生成一个进程实例
p = multiprocessing.Process(target=f, args=('bob',))

# 启动一个进程
p.start()

# 等待一个进程完成
p.join()
    多进程查看,主进程与子进程PID:
from multiprocessing import Process
import os

def info(title):
print(title)

# 打印模块名
print('module name:', __name__)

# 打印父进程ID
print('parent process:', os.getppid())

# 打印自己的ID
print('process id:', os.getpid())
print("\n\n")

def f(name):

# 子进程调用info
info('\033[31;1mfunction f\033[0m')
print('hello', name)

if __name__ == '__main__':

# 主进程调用info
info('\033[32;1mmain process line\033[0m')
p = Process(target=f, args=('bob',))
p.start()
p.join()
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: