多线程

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()

 

以上是关于多线程的主要内容,如果未能解决你的问题,请参考以下文章

什么是多线程,多进程?

多线程和多进程模式有啥区别

多线程Java多线程学习笔记 | 多线程基础知识

java中啥叫做线程?啥叫多线程?多线程的特点是啥

c++ 多线程与c多线程有啥区别?

IOS多线程安全(线程锁)