一.python线程
线程用于提供线程相关的操作,线程是应用程序中工作的最小单元。

上述代码创建了10个“前台”线程,然后控制器就交给了CPU,CPU根据指定算法进行调度,分片执行指令。
更多方法:
start线程准备就绪,等待CPU调度
setName为线程设置名称
getName获取线程名称
setDaemon设置为后台线程或前台线程(默认)
如果是后台线程,主线程执行过程中,后台线程也在进行,主线程执行完毕后,后台线程不论成功与否,均停止
如果是前台线程,主线程执行过程中,前台线程也在进行,主线程执行完毕后,等待前台线程也执行完成后,程序停止
加入逐个执行每个线程,执行完毕后继续往下执行,该方法使得多线程变得无意义
run线程被执行cpu调度后自动执行线程对象的运行方法

自定义线程类
由于线程之间是进行随机调度,并且每个线程可能只执行n条执行之后,当多个线程同时修改同一条数据时可能会出现脏数据,所以,出现了线程锁 - 同一时刻允许一个线程执行操作。

未使用锁
互斥锁同时只允许一个线程更改数据,而Semaphore是同时允许一定数量的线程更改数据,比如厕所有3个坑,那最多只允许3个人上厕所,后面的人只能等里面有人出来了才能再进去。

python线程的事件用于主线程控制其他线程的执行,事件主要提供了三个方法set,wait,clear。
事件处理的机制:全局定义了一个“Flag”,如果“Flag”值为False,那么当程序执行event.wait方法时就会阻塞,如果“Flag”值为True,那么event.wait方法时便不再阻塞。
clear:将“Flag”设置为False
set:将“Flag”设置为True
使得线程等待,只有满足某条件时,才释放ñ个线程


进程各自持有一份数据,默认无法共享数据

进程间默认无法数据共享

当创建进程时(非使用时),共享数据会被拿到子进程中,当进程中执行完毕后,再赋值给原值。
进程池内部维护一个进程序列,当使用时,则去进程池中获取一个进程,如果进程池序列中没有可供使用的进进程,那么程序就会等待,直到进程池中有可用进程为止。
进程池中有两个方法:
申请

网友评论