多任务
概念,操作系统同时运行多个任务
fork(创建进程)
导入os模块
程序运行到os.fork时,系统会创建一个子进程,然后把父进程复制一份到子进程,子进程的值一定是0,父进程返回子进程的id
getpid(),getppid()
getpid(),当前进程id,getppid父进程id
多次fork问题
父进程,子进程执行顺序没有规律,完全取决于操作系统的系统调度算法
multiprocessing
跨版本多进程模块
import Process (multiprocessing)
说明
创建子进程时,只需要传入一个执行函数和函数的参数,创建一个Process实例,用start()方法启动,这样创建进程比fork()还要简单。
·join()方法可以等待子进程结束后再继续往下运行,通常用于进程间的同步。
·target:表示这个进程实例所调用对象;
·args:表示调用对象的位置参数元组;
·kwargs:表示调用对象的关键字参数字典;
·name:为当前进程实例的别名;
·group:大多数情况下用不到;
Process类常用方法:
·is_alive():判断进程实例是否还在执行;
·join([timeout]):是否等待进程实例执行结束,或等待多少秒;
·start():启动进程实例(创建子进程);
·run():如果没有给定target参数,对这个对象调用start()方法时,就将执行对象中的run()方法;
·terminate():不管任务是否完成,立即终止;
Process类常用属性:
·name:当前进程实例别名,默认为Process-N,N为从1开始递增的整数;
·pid:当前进程实例的PID值;