快捷搜索:
来自 计算机编程 2019-06-18 13:24 的文章
当前位置: 67677新澳门手机版 > 计算机编程 > 正文

学学笔记15

1.线程进度
进度:程序并不可能独立运转,唯有将先后装载到内部存款和储蓄器中,系统为它分配财富手艺运维,而这种实行的次第就称为进度,不富有实施感念,只是程序各个财富集结

python 3.x 学习笔记15(二十四线程),python3.x

1.线程进程
经过:程序并不能够独立运营,唯有将次第装载到内部存款和储蓄器中,系统为它分配财富手艺运作,而这种执行的次第就称为进程,不具备实践感念,只是程序种种财富聚合

线程:线程是操作系统能够进行演算调整的非常的小单位。它被含有在经过之中,是进程中的实际运转单位。一条线程指的是经过中一个单一顺序的调控流,一个经过中能够并发多少个线程,每条线程并行实践不相同的天职

2.线程与经过的分别

线程共享内部存款和储蓄器空间,                                                                                               进度的内部存款和储蓄器是单独的

线程共享创设它的进度的地方空间;                                                                        进度具备和煦的地方空间。

线程能够一直访问其进度的数据段;                                                                        进度具备父进度的数据段的友爱的别本。

线程能够从来与其经过的任何线程通讯;                                                                 进程必须选用进度间通讯与兄弟进度展开通讯。

新线程很轻便创设;                                                                                                  新流程须要再行父流程。

线程能够对同一进度的线程实行格外程度的主宰;                                                   进度只好对子进度打开调控。

对主线程的转移(取消,优先级改动等)大概会影响进度别的线程的一颦一笑;            对父进度的更换不会影响子进程。

 

3.一条线程至少有一条线程

4.线程锁
    各样线程在要修改公共数据时,为了幸免自个儿在还没改完的时候外人也来修改此数量,能够给这几个数额加一把锁, 那样任何线程想修改此数据时就无法不等待你改改完结并把锁释放掉后技巧再拜访此数额

 

5.Semaphore(信号量)

    互斥锁 同期只同意八个线程更动数据,而Semaphore是同期允许一定数量的线程改变数据 ,比方厕全部3个坑,那最七只同意3个人上厕所,前面包车型大巴人只可以等内部有人出来了技能再进来。

 

6.join的功能是 等待线程实行完成

 

7.练习

信号量

__author__ = "Narwhale"

import threading,time

def run(n):
    semaphore.acquire()
    time.sleep(1)
    print('线程%s在跑!'%n)
    semaphore.release()

if __name__ == '__main__':
    semaphore = threading.BoundedSemaphore(5)      #最多5个线程同时跑
    for i in range(20):
        t = threading.Thread(target=run,args=(i,))
        t.start()

while threading.active_count() !=1:
    pass
else:
    print('所有线程跑完了!')

劳动者消费者模型

__author__ = "Narwhale"
import queue,time,threading
q = queue.Queue(10)

def producer(name):
    count = 0
    while True:
        print('%s生产了包子%s'%(name,count))
        q.put('包子%s'%count)
        count  = 1
        time.sleep(1)

def consumer(name):
    while True:
        print('%s取走了%s,并且吃了它。。。。。'%(name,q.get()))
        time.sleep(1)


A1 = threading.Thread(target=producer,args=('A1',))
A1.start()

B1 = threading.Thread(target=consumer,args=('B1',))
B1.start()
B2 = threading.Thread(target=consumer,args=('B2',))
B2.start()

红绿灯

__author__ = "Narwhale"

import threading,time

event = threading.Event()

def light():
    event.set()
    count = 0
    while True:
        if count >5 and count < 10:
            event.clear()
            print('\033[41;1m红灯亮了\033[0m' )
        elif count > 10:
            event.set()
            count = 0
        else:
            print('\033[42;1m绿灯亮了\033[0m')
        time.sleep(1)
        count  =1


def car(n):
    while True:
        if event.isSet():
            print('\033[34;1m%s车正在跑!\033[0m'%n)
            time.sleep(1)
        else:
            print('车停下来了')
            event.wait()

light = threading.Thread(target=light,args=( ))
light.start()
car1 = threading.Thread(target=car,args=('Tesla',))
car1.start()

 

3.x 学习笔记15(八线程),python3.x 1.线程进度过程:程序并无法独立运行,唯有将顺序装载到内部存款和储蓄器中,系统为它分配财富能力运作,而那...

线程:线程是操作系统能够进行演算调整的小不点儿单位。它被含有在经过之中,是经过中的实际运维单位。一条线程指的是进程中叁个十足顺序的调整流,一个历程中得以并发四个线程,每条线程并行实践不一样的任务

2.线程与经过的界别

线程共享内部存款和储蓄器空间,                                                                                               进度的内部存款和储蓄器是单独的

线程共享制造它的历程的地方空间;                                                                        进度具备和煦的地方空间。

线程能够一向访问其进度的数据段;                                                                        进程具备父进度的数据段的温馨的副本。

线程能够向来与其经过的任何线程通讯;                                                                 进度必须使用进程间通讯与男人进度展开通讯。

新线程很轻巧成立;                                                                                                  新流程须要重新父流程。

线程能够对同样进度的线程举行卓越程度的主宰;                                                   进度只好对子进度展费用配。

对主线程的改换(打消,优先级退换等)恐怕会潜移默化进度其余线程的表现;            对父进度的改观不会影响子进度。

 

3.一条长河至少有一条线程

4.线程锁
    每一种线程在要修改公共数据时,为了防止自身在还没改完的时候外人也来修改此数额,能够给那些数量加一把锁, 那样任何线程想修改此数量时就务须等待你改改完结并把锁释放掉后技术再拜访此数据

 

本文由67677新澳门手机版发布于计算机编程,转载请注明出处:学学笔记15

关键词: