并发是任务数多于cpu核数,这样看起来是一起执行,其实切换比较快而已
并行就是任务数小于cpu核数,一起执行

单核其实就是类似于并发,一个一个切换的比较快,多核可以看成多个单核,类似操作。

调度算法:什么样的情况下让谁先执行,就是调度算法

进程:正在运行的代码
程序:编写完毕的代码,没有运行
进程的三个状态:就绪,运行,阻塞
———————————————————————————————————————————————

ret=os.fork() #创建一个子进程
主进程中ret>0,子进程中ret=0,有了os.fork就创造了一个子进程,下面的都执行。

当主进程退出就退出,不会因为子进程没结束就等他。只是因为加了一个os.fork(),主进程打印over了,子进程还是执行over多进程(python语言实现,详细讲解)

全局变量在一个进程中数据修改不能个改变另一个进程的数据
多进程(python语言实现,详细讲解)
多次fork,如果是并列的就是2的n次方多进程(python语言实现,详细讲解)
和fork不一样的地方就是,fork,windows里面没有,所以要想创建一个进程就用from multiprocessing import Process多进程(python语言实现,详细讲解)
这时候把下面的while True删除了,主进程就会等待子进程结束在结束,而fork不会,两个没有影响

join会一直等到这个进程结束才会进行下一个进程,这个不结束就一直等多进程(python语言实现,详细讲解)

常用的Process方法多进程(python语言实现,详细讲解)

子类创建进程,用类来编写,继承Process类,可以有__init__,外部的start一定会调用run方法,所以是重写run方法多进程(python语言实现,详细讲解)
进程池,非堵塞方式,堵塞就把apply_async变成apply就是一个进程结束在执行另一个进程多进程(python语言实现,详细讲解)
———————————————————————————————————————————————
进程间的通信
from multiprocessing import Process,Queue
q=queue()
q.put(0)
q.get()就是取出来并且读出来
q.qsize()判断里面有几个参数
q.full()判断队列满了没
q.empty()判断队列是不是空了

这个只能用作Process,如果要用到进程池的话需要from multiprocessing import Manager,Pool

初始化时候要p=Manager().Queue()多进程(python语言实现,详细讲解)

相关文章: