Python 多进程编程之multiprocessing

1,Process

  • 跨平台的进程创建模块(multiprocessing), 支持跨平台:windowx/linux
  • 创建和启动
          创建格式:p=Process(target=函数名)
    ----def __init__(self, group=None, target=None, name=None, args=(), kwargs={}):
    group:分组(基本不用)
    target:表示这个进程实例所调用的对象.
    name:给进程起一个别名
    args:参数,表示调用对象的位置参数元组
    kwargs:表示调用对象的关键字参数字典

    注意:target后是函数名,一定要记住,是函数名,没有括号
    带括号的话,子进程就没有创建,直接在主进程执行了
          启动:p.start()

  • ----在主进程等待指令之前加入     p.join()
    这个命令叫做"阻塞",意思是让主进程
    等待子进程结束之后,再执行join()之后的语句
    ----可以设置等待子进程时间    p.join(4)
    设置时间之后,主进程的阻塞时间只有4秒
  • 进程对象.is_alive()
    检测进程是否活着
    ----会有2个返回值
    True:活着
    False:死了
  • 进程对象.terminate()
    ----不管进程是否结束,
    强制终止进程
  • 实例:从键盘输入一个整数,分别开启两个进程来计算这个数的累加和和阶乘。
    (第一个进程用系统提供给我们的类,第二个进程需要自己定义)
  • from multiprocessing import Process
    
    #方法1:
    def sumToN(n):
    s = 0
    for i in range(1,n+1):
    s += i
    print("累加和:%d"%s) #方法2:
    class JieCheng(Process):
    def __init__(self,n):
    Process.__init__(self)
    self.n = n def run(self):
    j = 1
    for i in range(1, self.n + 1):
    j *= i
    print("%d!=%d"%(self.n, j)) if __name__ == "__main__":
    #输入一个数:
    str_num = input("请输入一个数:")
    num = int(str_num) #创建进程--计算
    #方法1: 系统提供给我们的类
    p1 = Process(target=sumToN,args=(num,))
    p1.start() #方法2:自己定义的类,也叫继承系统类
    p2 = JieCheng(num)
    p2.start()

Python 多进程编程之multiprocessing--Process的更多相关文章

  1. Python 多进程编程之multiprocessing--Pool

    Python 多进程编程之multiprocessing--Pool ----当需要创建的子进程数量不多的时候,可以直接利用multiprocessing 中的Process 动态生成多个进程, -- ...

  2. python并发编程之multiprocessing进程(二)

    python的multiprocessing模块是用来创建多进程的,下面对multiprocessing总结一下使用记录. 系列文章 python并发编程之threading线程(一) python并 ...

  3. python多进程的理解 multiprocessing Process join run

    最近看了下多进程. 一种接近底层的实现方法是使用 os.fork()方法,fork出子进程.但是这样做事有局限性的.比如windows的os模块里面没有 fork() 方法. windows:.lin ...

  4. Python 多进程编程之fork()

    Python实现多进程可以用系统fork()方法和python的multiprocessing类 1,fork()方法是Unix/Linux操作系统提供的,在python的os模块中自带fork(). ...

  5. python并发编程之Queue线程、进程、协程通信(五)

    单线程.多线程之间.进程之间.协程之间很多时候需要协同完成工作,这个时候它们需要进行通讯.或者说为了解耦,普遍采用Queue,生产消费模式. 系列文章 python并发编程之threading线程(一 ...

  6. python并发编程之asyncio协程(三)

    协程实现了在单线程下的并发,每个协程共享线程的几乎所有的资源,除了协程自己私有的上下文栈:协程的切换属于程序级别的切换,对于操作系统来说是无感知的,因此切换速度更快.开销更小.效率更高,在有多IO操作 ...

  7. python并发编程之threading线程(一)

    进程是系统进行资源分配最小单元,线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位.进程在执行过程中拥有独立的内存单元,而多个线程共享内存等资源. 系列文章 py ...

  8. python并发编程之gevent协程(四)

    协程的含义就不再提,在py2和py3的早期版本中,python协程的主流实现方法是使用gevent模块.由于协程对于操作系统是无感知的,所以其切换需要程序员自己去完成. 系列文章 python并发编程 ...

  9. Python函数式编程之map()

    Python函数式编程之map() Python中map().filter().reduce()这三个都是应用于序列的内置函数. 格式: map(func, seq1[, seq2,…]) 第一个参数 ...

随机推荐

  1. Browser Render Engine & Javascript Engine

    Browser Render Engine Programming Language Open Source Javascript Engine Comparation for CSS Compati ...

  2. Github访问速度慢和下载慢的解决方法

    原因 为什么访问速度慢.下载慢?github的CDN被某墙屏了,由于网络代理商的原因,所以访问下载很慢.Ping github.com 时,速度只有300多ms. 解决方法 绕过dns解析,在本地直接 ...

  3. 使用Oracle DBLink进行数据库之间对象的访问操作

    Oracle中自带了DBLink功能,它的作用是将多个oracle数据库逻辑上看成一个数据库,也就是说在一个数据库中可以操作另一个数据库中的对象,例如我们新建了一个数据database1,我们需要操作 ...

  4. Linux 上利用Nginx代理uWSGI处理Flask web应用

    一.介绍 最近开发要用一个测试环境,是这样的Nginx+uwsgi+flask 的一个结构.下面是一些记录,在Centos 系统上使用Flask 架构部署一个简单的Python应用.然后使用Nginx ...

  5. 4-安装mariadb

    ①yum install mariadb-server mariadb systemctl start mariadb #启动MariaDB systemctl stop mariadb #停止Mar ...

  6. Oracle 学习笔记(六)

    Oracle 数据库常用的闪回sql 语句及其它操作语句: --Oracle 数据库dml sql -- 查看当前用户所拥有的表 select * from tab; --表空间,auto: 自动管理 ...

  7. jsp jstl quote symbol expected

    org.apache.jasper.JasperException: /WEB-INF/jsp/user/index.jsp (line: 2, column: 27) quote symbol ex ...

  8. C# 委托和泛型

    委托定义: 委托是一个类,它定义了方法的类型,使得可以将方法当作另一个方法的参数来进行传递,这种将方法动态地赋给参数的做法,可以避免在程序中大量使用If-Else(Switch)语句,同时使得程序具有 ...

  9. 下载安装 STS(Spring Tool Suite),推荐对应 Eclipse 版本号,适用于Windows32位(xp、2003)

    sts下载地址:https://spring.io/tools/sts/legacy 虽然sts内置了版本对应的eclipse,仍推荐使用当前环境下稳定使用的eclipse版本. Start 找到ec ...

  10. python中类与对象及其绑定方法的定义

    面向对象编程 什么是面向对象? 面向过程:将需要解决的问题按步骤划分,一步一步完成每一个步骤,而且          步骤之间有联系. 优点:复杂问题可以分步完成 缺点:扩展性很差,维护性差.如果中间 ...