linux-进程与线程 概括

进程 运行的程序
四种创建 方法
第一种
os模块 fork() 创建 fork在子进程和父进程中返回的值不同 子进程返回0 父进程返回创建的子进程PID getpid 获取当前进程PID getppid获取父级进程PID

第二种 multiprocessing 中Process 类
实例类
Process(group,target,name,args,kwargs)
group 进程组
target 调用对象
name 名字
args 参数 元祖形式
kwargs 参数 字典格式
常用方法
is_alive 判断是否运行
start 运行
join 主进程阻塞 等待子进程结束
run
terminate 立即终止

第三种 写一个Process 的派生类重写run方法

第四种 Pool 进程池
Pool() 创建进程池
apply_async(func,args,kwargs)
apply(func,args,kwargs)
都是分配任务一个异步一个同步
close 关闭进程池接受任务
join 主进程阻塞 等待子进程
terminate

进程间通信 通过 Queue 进程池需要用Manager().Queue()
方法
qsize 查看当前队列个数
full 判断队列是否满了
empty 判断队列是否为空
get(block,timeout) 获取信息 默认block True 同步
put(item,block ,timeout )添加信息
get_nowait()
put_nowait()

线程

多线程 threading Thread 类
实例 或者创建 派生类
用法和Process 差不多

可以共享全局变量 但是会产生 并发竞争 通过锁机制

Lock () 创建锁
acquire 获取锁
release 释放锁

互斥锁
特殊情况 死锁 解决方案 银行家算法 或者使用超时机制

消费者和生产者模式 通过 Queue 中Queue py2 py3 queue 中Queue 来解除线程之间的关联 解耦作用

全局变量多线程不受影响 通过 threading.local()

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 多线程和多进程,无论在嵌入式领域,还是应用开发领域,都是不可避免要设计和使用的。那什么是线程,什么是进程,他们之间...
    随波逐流007阅读 413评论 0 0
  • pthread_create 创建一个线程 pthread_self 返回当前线程的线程id pthread_ex...
    joejoeu阅读 446评论 0 0
  • @(python)[笔记] 目录 一、什么是进程 1.1 进程的概念 进程的概念起源于操作系统,是操作系统最核心的...
    CaiGuangyin阅读 1,281评论 0 9
  • 1. 定义 进程(英语:process),是计算机中已运行程序的实体。线程(英语:thread)是操作系统能够进行...
    天官大冢宰阅读 299评论 0 0
  • 看到《本色》的“修行”章节,乐老师去到一个“与世隔绝”的地方七天,而这七天大多时候不能说话不能眼神交流,对于我这样...
    承思而行阅读 151评论 0 0