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()
  • 相关阅读:
    冬季小学期 NIIT公司 web前端培训 javascript
    冬季小学期 NIIT公司 web前端培训 CSS
    冬季小学期 NIIT公司 web前端培训 HTML
    操作系统 思维导图 百度脑图
    验证码识别系统以及人工智能总结 神经网络encog图像识别入门
    eclipse 常用操作 持续更新
    大话设计模式笔记 访客模式
    [百度杯-二月场](Misc-Web)爆破-2
    [百度杯-二月场](Misc-Web)爆破-1
    jdk1.7中的常量池
  • 原文地址:https://www.cnblogs.com/xiangsikai/p/8185073.html
Copyright © 2011-2022 走看看