多进程多线程

多进程几种创建方式:

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类。

posted @ 2019-03-11 21:39  小胖手  阅读(96)  评论(0)    收藏  举报