关于进程:

  • 介绍:

    • 在python中如果想要操作进程需要使用模块multprocessing
  • 使用:

    • Process  #进程

      • 介绍:

        • 操作进程使用multprocessing下的Process模块,注:进程之间的内存是不共享的!(可以共享需要一个特殊的特殊的数据结构Array(数组))
      • 使用:
        • p = Process(target=函数,args=(参数,))   #创建线程
        • p.daemon(True)    #当参数为Ture的时候为主进程执行完毕后退出程序,为False的时候为等待子进程执行完毕后退出,默认为False
        • p.join()  #和线程的同样,很少使用!
        • 使用Array来让多个进程修改一个数据

          from multiprocessing import Process,Array
          def f(a,b):b[a] = 100 + a
          if __name__ == '__main__':temp = Array('i',[11,22,33,44])for i in range(2):#循环两次执行f函数修改列表的值p = Process(target=f,args=(i,temp,))p.start()p.join()for i in temp:print(i)
          执行结果:
          100
          101
          33
          44

          View Code

        • 利用manager实现多进程之间共享数据

          from multiprocessing import Process,Manager
          def f1(a,b):b[a] = 100 + aprint(b)if __name__ == '__main__':manage = Manager()dic = manage.dict()for i in range(5):p = Process(target=f1,args=(i,dic,))p.start()p.join()
          执行结果:
          {0: 100}
          {0: 100, 1: 101}
          {0: 100, 1: 101, 2: 102}
          {0: 100, 1: 101, 2: 102, 3: 103}
          {0: 100, 1: 101, 2: 102, 3: 103, 4: 104}

          View Code

    • Pool #进程池的操作
      • 介绍:

        • 犹如一个书店,一本同样的书有3本,3个人取走后之后来的人想要获取到必须等待前3个人还书后才可获得。
      • 使用:
        • poll.apply(函数,参数) #在进程池中申请一个进程去执行函数(申请一个进程执行一个再申请)

        • poll.apply_async(func=函数名,args=(参数,),callback=函数名2) #申请一个进程执行函数完成后执行函数名2,函数名2的参数是函数名执行完成后的返回值(直接全申请了,一起执行)

        • 代码:

          from multiprocessing import Pool
          import time
          def f1(i):time.sleep(2)return i+100def end_call(arg):print('end>>>',arg)if __name__ == '__main__':p = Pool(5) #创建一个线程池一共有5个线程for i in range(11):p.apply_async(func=f1,args=(i,),callback=end_call)print('123123')p.close()p.join()执行结果:
          123123
          end>>> 100
          end>>> 101
          end>>> 102
          end>>> 103
          end>>> 104
          end>>> 105
          end>>> 106
          end>>> 107
          end>>> 108
          end>>> 109
          end>>> 110

          View Code

转载于:https://www.cnblogs.com/WuYongQi/p/5673477.html

python开发Day10(多进程多线程补充)相关推荐

  1. python随笔系列--多进程多线程并发度初探

    大家都知道python中由于GIL这把大锁的存在,导致python的多线程并不是真正的多线程(不同于java等语言).首先了解下GIL导致的现象:同一时间只能有一个线程占有python解释器(或者,同 ...

  2. 使用Python开发的POC多线程批量执行小框架

    因为代码量非常少,所以就叫"小框架"吧. 接口非常简陋,但是好处是适配POC脚本的时候很灵活,兼容性高,不需要任何研究成本. 简单来说,你按照自己的想法和习惯开发一个POC验证程序 ...

  3. python中的多进程与多线程(二)

    1.使用多线程可以有效利用CPU资源,线程享有相同的地址空间和内存,这些线程如果同时读写变量,导致互相干扰,就会产生并发问题,为了避免并发问题,绝不能让多个线程读取或写入相同的变量,因此python中 ...

  4. Python学习笔记:多线程和多进程(转1)

    前言 最近在学习深度学习,已经跑出了几个模型,但Pyhton的基础不够扎实,因此,开始补习Python了,大家都推荐廖雪峰的课程,因此,开始了学习,但光学有没有用,还要和大家讨论一下,因此,写下这些帖 ...

  5. Python实现多进程/多线程同时下载单个文件

    功能描述: 使用多进程/多线程同时下载单个文件,可以自定义文件地址.进程/线程数量. 主要思路: 获取文件大小,使用多个进程/线程分别下载一部分,最后再把这些文件拼接起来. 参考代码: 运行结果: - ...

  6. python多进程多线程,多个程序同时运行

    python 多线程 多进程同时运行 多任务要求 python 基础语法 python 文件目录操作 python 模块应用 开发工具 pycharm 实现方法 多任务的实现可以用进程和线程来实现 进 ...

  7. python中的多任务-多线程和多进程

    多线程和多进程都是实现多任务的一种方式,但是对于很多初学者来说想分清楚他们往往是一件非常头疼的事,首先我们需要了解多任务的概念. 所谓的多任务就是在同一时刻同时做很多事情,比如我们一边使用浏览器上网一 ...

  8. 多进程多线程 ---- Python和Java

    Python: 真正的并行执行多任务只能在    多核CPU    上实现,但是,由于任务数量远远多于CPU的核心数量,所以,操作系统会自动 的把很多任务轮流调度到每个核心上执行. 对于操作系统来说, ...

  9. python廖雪峰_【Python】python中实现多进程与多线程

    进程与线程 进程(process)就是任务,是计算机系统进行资源分配和调度的基本单位[1].比如,打开一个word文件就是启动了一个word进程. 线程(thread)是进程内的子任务.比如word中 ...

最新文章

  1. C++ 函数参数 值传递与引用传递
  2. PE文件和COFF文件格式分析——导出表的应用——通过导出表隐性加载DLL
  3. Hystrix的应用案例:多短信供应商的自动切换与恢复
  4. 机器学习基础(HGL的机器学习笔记1)
  5. 【LeetCode每周算法】两数相加
  6. windows下编译chromium浏览器的15个流程整理
  7. IT英语职场之网管英语大全
  8. 反射,hashlib模块,正则匹配,冒泡,选择,插入排序
  9. 关闭注册表编辑器,重新启动计算机后生效。这样资源管理器重启后就不会自动重启了。...
  10. java生成j动态页面_zk动态产生多个页面的例子代码
  11. [转】TCP 三次握手 四次挥手
  12. 设计sample语言的语法_Verilog语法之〇:Verilog HDL简介
  13. bash的快捷键、特殊参数、历史命令、相关文件
  14. qt5不能添加新文件_VS2017配置Qt5.9教程
  15. 计算机网络实验一 集线器和交换机的工作原理
  16. C语言输出转置矩阵解题步骤,C语言实现矩阵转置
  17. Go 小项目1 - 家庭收支记账软件
  18. Http请求全过程简述
  19. java计数器map_计数器(Counter)
  20. 一位股票老战士的十年投资心得!

热门文章

  1. Hive Cli 和 Beeline
  2. 为什么Spark比MapReduce快
  3. Android程序中回调的讲解和使用
  4. 预算分配Budget Allocation:两篇论文(二)
  5. caffe︱Pascal VOC 2012 Multilabel Classification Model
  6. PHP系统学习3 正则
  7. 面向对象封装的web服务器
  8. SDN Overlay网络中虚机到物理机的数据包的转发
  9. Xcode C++ and Objective-C refactoring
  10. 【Eclipse】启动时报错:No Java virtual machine (已解决)