zoukankan      html  css  js  c++  java
  • Python 多进程

    需求:
       在有多线程的情况下,我们可以使用线程帮我们处理一些事情,但是在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("
    
    ")
    
    def f(name):
    
        # 子进程调用info
        info('33[31;1mfunction f33[0m')
        print('hello', name)
    
    if __name__ == '__main__':
    
        # 主进程调用info
        info('33[32;1mmain process line33[0m')
        p = Process(target=f, args=('bob',))
        p.start()
        p.join()
  • 相关阅读:
    Highcharts 柱图 每个柱子外围的白色边框
    进阶ES6 点滴认知
    layer 问题 汇总
    iframe 常见问题 解析
    【腾讯开源】前端预处理器语言图形编译工具 Koala使用指南
    ruby环境sass编译中文出现Syntax error: Invalid GBK character错误解决方法
    Sass 混合宏、继承、占位符 详解
    git 命令篇
    git 继续前进篇
    zh-cn en-uk、zh-tw表示语言(文化)代码与国家地区对照表(最全的各国地区对照表)
  • 原文地址:https://www.cnblogs.com/xiangsikai/p/8185073.html
Copyright © 2011-2022 走看看