多任务

作者: 希望我是摩羯座 | 来源:发表于2019-03-14 14:38 被阅读0次

并发:看上去一起执行。(任务数>核数)

并行:实际上一起执行。

一:创建子进程:os.fork() 。 用判断语句,if:else:父进程子进程一起执行。

fork函数在windows不可以运行。每调用一次,进程数*2

基本不用,属于底层。

二:windows:from multiprocessing import Process ,主进程等待子进程结束。

p =Process(target = func) ,p.start()

三:进程池:Pool  

作用:缓冲  ,相当于提前创建好池子(包含最大进程数),需要时候调用(在池子里添加任务) p = pool(n),p.apply_async(xxx) 非阻塞方式

特点:进程池的主进程不会等着子进程,主进程一般用来等待,任务都是子进程做的,不需要每次创建池子,提高效率。

解决方案:pool.close()  关闭,不再添加新任务 + pool.join()  等待子进程结束。

例如:池子3个进程,添加10个任务,不会阻塞,池子里的3个进程轮流做任务。

阻塞方式:p.apply(),一个一个执行,基本不用

---------------------------进程通信-------------------------------

进程间通信:用Queue,队列。 因为进程和进程之间默认没有关联。

用Queue创建的通信,只能在Process创建的进程里用

如果在进程池中创建的任务要实现通信,用Manager.Queue() 初始化才可以用。

先进先出:队列,先进后出:栈

----------------------------多线程------------------------------------

一个程序有一个进程,这个进程有个主线程,还可以有若干个子线程。主线程执行完了,也不会立即结束,主线程的主要任务就是会等待子线程。

多个线程执行同一个函数,不会有任何问题。

创建线程方式一:from threading import Thread,  t = Thread(target = xxx)  , t.start(),t.join()

创建线程方式二:import threading ,  定义新的类继承 Thread

执行顺序:操作系统说了算

全局变量:多进程不共享全局变量,全局变量个人是个人的。但是多线程里面共享全局变量。

进程和线程区别:列表(可变数据类型)当做参数给线程,线程间数据共享。

互斥锁:用一个全局变量时候,用轮询效率低,所以用互斥锁。

作用保证多线程对同一资源竞争时候,只有一个能上锁,其他都卡住,解锁后其他线程一起抢上锁。 lock = Lock()

acquire上锁,release解锁。 对必须加锁的加锁。(相当于通知方式)

不管是进程还是线程,函数里面(非全局变量)不共享,个人是个人的。

死锁:两线程分别占有一部分资源并同时等待对方的资源,会造成死锁。

解决方法:设置超时时间。

------------------------同步-----------------------

同步:协同步调,有规律

异步:不固定顺序

生产者与消费者模式:解决解耦,用到queue

函数需要用到其他函数定义的变量:1,可以传参数 2,全局变量。  

用ThreadLocal,(类似于全局字典),

一个函数想要得到另一个函数的值:1,return返回 2,全局变量。

相关文章

  • 06.系统编程-1.进程

    1、多任务的引入 实现类似唱歌又跳舞的任务同时进行的,叫做:多任务 2、多任务的概念 什么叫“多任务”。简单地说,...

  • Python多任务总结

    多任务什么是多任务同时做多件事件(做个多个任务),运行多个方法多任务的原理并发:假的多任务,时间片的轮转,快速的交...

  • 进程调度

    多任务 多任务系统可以划分为两类: 非抢占式多任务 除非进程自己停止, 否则它会一直执行 抢占式多任务 由调度程序...

  • 1-进程

    多任务原理 现代操作系统(Windows、Mac OS X、Linux、UNIX等)都支持“多任务” 什么叫多任务...

  • 进程、线程

    时间片轮转 并行:真的多任务 并发:假的多任务

  • iOS11人机交互指南(四)- System Capabilit

    一、多任务处理(Multitasking) 多任务处理让你能够通过iOS设备上的多任务处理界面或是在iPad上使用...

  • 线程

    单核CPU如何执行多任务? 多核CPU如何执行多任务? 真正的并行执行多任务只能在多核CPU上实现,但是,由于任务...

  • python_多任务编程

    多任务 多任务:在同一时间内执行多个任务多任务的目的:多任务的最大好处是充分利用CPU资源,提高程序的执行效率 ...

  • CGD用法

    多任务

  • 多任务学习Demo

    多任务学习简述 什么是多任务学习多任务学习(Multi-Task Learning)顾名思义就是把多个任务放在一起...

网友评论

      本文标题:多任务

      本文链接:https://www.haomeiwen.com/subject/scvqmqtx.html