多进程几种创建方式:
a.只使用于unix系统。 os.fork()调用一次,返回两次,在父进程中返回值为“子进程”ID,在子进程中返回值为0。
经常使用的函数:os.getpid()获取当前进程ID os.getppid()当前进程的父进程ID
b.multiprocessing中的Process类
Process(target=函数名,args=(函数的参数,)
常用属性及方法:name、pid、run()自定义子类时需要覆盖、start()开启进程、join(time=None)阻塞、terminate()终止进程、is_alive()进程是否存活。
c.批量创建进程,使用进程池Pool。
apply 阻塞式首先主进程开始运行,碰到子进程,操作系统切换到子进程,等待子进程运行结束后,在切换到另外一个子进程,直到所有子进程运行完毕。然后在切换到主进程,运行剩余的部分。
apply_async是异步非阻塞式的。
首先主进程开始运行,碰到子进程后,主进程说:让我先运行个够,等到操作系统进行进程切换的时候,在交给子进程运行。以为我们的程序太短,然而还没等到操作系统进行进程切换,主进程就运行完毕了。
想要子进程执行,就告诉主进程:你等着所有子进程执行完毕后,在运行剩余部分。
推荐使用apply_async
---------------------------------------------后面补充同步异步阻塞非阻塞区分。
多线程:
1.thread
2.threading------实际是对第一种的优化。 使用threading中的Thread类。
原文:https://www.cnblogs.com/lovestarmoon/p/10513410.html