python进阶03

标签:元组   读数   单元   平台   运行机制   属性   修改   结束   维护   

进程线程不管哪门语言都是一块可以被重视的方向,下面一起学习学习python中的进程,线程

1.进程线程区别

  通俗解释:一个程序QQ的运行就是一个进程运行;QQ中打开多个页面互不影响可以同时操作的每个页面的运作就是线程

  专业解释:进程-担当系统分配资源(CPU时间,内存)基本单元;线程-程序执行的最小单元

2.进程

  1)fork()

    2.1.1:介绍

      linux可以多进程操作,所以它能实现登录多个QQ;os模块封装了fork()方法能创建一个进程

      操作系统会创建一个新的进程,复制父进程所有信息到子进程中;

      fork()函数一定会得到一个返回值,子进程中为0,父进程中就是子进程的id号;

      父进程要记下每个子进程的ID,而子进程只需要调用getppid()就可以拿到父进程的ID;

      getpid():放回当前进程标识;getppid():返回父进程标识

    2.1.2:用法  

技术分享图片
import os

rpid = os.fork()
if rpid<0:
    print("fork调用失败。")
elif rpid == 0:
    print("我是子进程(%s),我的父进程是(%s)"%(os.getpid(),os.getppid()))
    x+=1
else:
    print("我是父进程(%s),我的子进程是(%s)"%(os.getpid(),rpid))

print("父子进程都可以执行这里的代码")


运行结果:
我是父进程(19360),我的子进程是(19361)
父子进程都可以执行这里的代码
我是子进程(19361),我的父进程是(19360)
父子进程都可以执行这里的代码
View Code

  2)注意

    多进程中所有数据(包括全局变量)都各有一份,互不影响

  3)multiprocessing 

    2.3.1:介绍

      跨平台的非linux支持的多进程模块,提供了一个Process类代表一个进程对象

    2.3.2:Process-进程创建

      Process([group [, target [, name [, args [, kwargs]]]]])
        target:表示这个进程实例所调用对象;
        args:表示调用对象的位置参数元组;
        kwargs:表示调用对象的关键字参数字典;
        name:为当前进程实例的别名;
        group:大多数情况下用不到;
       Process类常用方法:
        is_alive():判断进程实例是否还在执行;
        join([timeout]):是否等待进程实例执行结束,或等待多少秒;
        start():启动进程实例(创建子进程);
        run():如果没有给定target参数,对这个对象调用start()方法时,就将执行对象中的run()方法;
        terminate():不管任务是否完成,立即终止;
      Process类常用属性:
        name:当前进程实例别名,默认为Process

python进阶03

扫一扫手机访问