线程

并发:指的是任务数多余cpu核数,通过操作系统的各种任务调度算法,实现用多个任务“一起”执行(实际上总有一些任务不在执行,因为切换任务的速度相当快,看上去一起执行而已)
并行:指的是任务数小于等于cpu核数,即任务真的是一起执行的


变量 = threading(模块).Thread(方法)(target=函数名,没有括号,name='给线程起的名字',  传参数  少用元组args=(1,) 注意格式  多用字典kwargs={'name':'小白','age':20})
变量.start()  线程需要start


主线程等待所有子线程执行完才结束,所以有的情况需要保护主线程的执行,即以主线程为主,就算子线程没执行完,也要按照主线程的要求走,退出结束或者等等
设置保护主线程:  子线程.setDaemon(True)


线程是同时执行的,如果都用到全局变量并且对全局变量做更改,会发生资源争夺,导致数据错误,使用 子线程.join() 保证一个线程改完再执行第二个线程
或者用   锁   模块, 创建lock = threading.Lock()    上锁lock.acquire()    解锁lock.release()    注意避免死锁
    
自定义线程类,挺重要有容易犯错误的小点1.init方法里需要继承父类用super   2.使用run函数来执行start  3.传参易出错




一些小的点:    其实是检验的手段
print(threading.current_thread)  当前的线程  
threading.enumerate() 列举活跃线程

threading.active_count()线程活跃数量


import time
import threading


def saysorry():
    print('亲爱的,我错了,可以吃饭了吗...')
    time.sleep(2)




if __name__ == '__main__':
    print(threading.current_thread())
    for i in range(8):
        # print(threading.current_thread())  # 子线程还没有start那当然还只有主线程执行
        t = threading.Thread(target = saysorry)  # 创建线程的格式
        t.start()  # 子线程要start

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值