多线程
Posted huangguabushihaogua
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了多线程相关的知识,希望对你有一定的参考价值。
进程:
优点:同时利用多个cpu,能够同时进行多个操作
缺点:消耗资源(重新开辟内从空间)
线程:
优点:共享内存,IO操作的时候m,创造并发操作
缺点:抢占资源
进程不是越多越好,cpu个数=进程个数
线程也不是越多越好,请求上下文切换耗时
线程锁 threading.Rlock 和 threading.lock
threading.Event
Event 是线程通信最间的机制之一,一个线程发送一个event 信号,其他的线程则等待这个信号。用于主线程控制其他线程的执行,Events 管理一个flag,这个flag可以使用set(),
设置成True或者使用clear()重置为false,wait()则用于阻塞,在flag为True之前,flag默认为False
Event.wait([timeout]):堵塞线程,直到Event对象内部标识位被设计为True或超时
Event.set():将标识位设为True
Event.clear():将标识伴设为False
Event.isSet:判断标识位是否为True
创建线程
import time
import threading
def f0():
def f1(a1):
time.sleep(10)
f0()
t = threading.Thread(target=f1,args=(123,))
t.setDaemon(True) ##主线程是否等待子线程
t.start()
print(‘111‘)
t.join() # 一个一个执行,括号内可以传入参数,等待这个参数的时间如果上一个线程任务没有执行完,直接执行下一个
print(‘222‘)
event 事件
import threading
def do(event):
print(‘红灯‘)
event.wait()
print(‘红灯‘)
event_obj = threading.Event()
for i in rang(10):
t = threading.Thread(target=do,args=(event_obj,))
t.start()
event_obj.clear()
inp =input(‘输出‘:)
if inp ==‘True‘:
event_obj.set()
以上是关于多线程的主要内容,如果未能解决你的问题,请参考以下文章