Python学习笔记:多线程

引入多线程模块
import threading

任何一个进程启动的时候会默认的启动一个线程,这个线程叫主线程,主线程可以启动新的子线程

获取主当前线程的名称
threading.current_thread().name

创建子线程
t=threading.Thread(target=fun,args=(参数1,参数2))

每个进程结束,都会结束当前线程。所以每个主线程都应该等到子进程结束主线程才能结束。


多线程共享数据?
多线程和多进程最大的不同在于,多进程中,同一个变量,各自有一份拷贝存在进程中,互不影响,而多线程中,所有变量都由所有线程共享,所以,任何一个变量都可以被任意一个线程修改,因此,线程之间共享数据最大的危险在于多个线程同时修改一个变量,容易把内容改乱。

线程锁解决数据混乱?
优点:线程锁保证了数据的准确性
缺点:阻止了并发执行,包含锁的某段代码实际上是单线程模式执行,所以效率降低了!
由于可以存在多个锁,不同线程持有不同的锁,其他线程并试图获取其他的锁,可能造成死锁,导致多个线程挂起。

创建线程锁对象
lock = threading.Lock()

开始给线程上锁
lock.acquire()

开始给线程释放锁(解锁)
lock.release()

每个线程对ThreadLocal对象都可以读写,但是互不影响
local=Threading.local()


#调度线程?
调度线程是给线程执行的时候设置一个先后的顺序来的。
因为多线程执行是没有顺序的,如果想要让现场顺序执行,那么就要调度线程


引入调度线程

创建Condition

cond=threading.Condition()

 

等待信号

cond.wait()

 

释放信号

cond.notify()

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值