线程

作者: 北游_ | 来源:发表于2018-06-14 20:27 被阅读7次

语法

多线程工作在单进程下。在多线程模式下,数据变量是被所有线程共享的。

1.创建线程

import threading

def runFunc1(a):
    for i in range(10):
        print('func1' ,int(a) + i)


def runFunc2(b):
    for i in range(4):
        print('func2',int(b) + i)


if __name__ == '__main__':
    # 创建线程1
    t1 = threading.Thread(target=runFunc1, args=(2,))
    # 创建线程2
    t2 = threading.Thread(target=runFunc2, args=(4,))
    
    # 开启线程1
    t1.start()
    # 开启线程2
    t2.start()
    
    # 阻塞主线程
    t1.join()
    t2.join()
    
    
# 控制台输出:
"""
func1 2
func1 3
func1 4
func1 5
func2 4
func1 6
func2 5
func1 7
func2 6
func1 8
func2 7
func1 9
func1 10
func1 11
"""       

当两个处理函数同时操作一个变量时,要使用线程锁。

  • 获取锁:lock.acquire()
  • 释放锁:lock.release()
  • 使用 try……finally ,在finally中处理释放锁

线程锁的好处

  • 确保了某段关键代码只能由一个线程从头到尾完整地执行,

线程锁的坏处

  • 首先是阻止了多线程并发执行,包含锁的某段代码实际上只能以单线程模式执行,效率就大大地下降了。
  • 由于可以存在多个锁,不同的线程持有不同的锁,并试图获取对方持有的锁时,可能会造成死锁,导致多个线程全部挂起,既不能执行,也无法结束,只能靠操作系统强制终止。

相关文章

  • Android

    线程间通信 主线程和工作线程主线程和工作线程 工作线程与工作线程工作线程与工作线程 为什么主线程Looper.lo...

  • 三、操作系统之线程

    前言 什么是线程 引入线程的原因 线程的概念 线程和进程的关系 线程结构 线程有点 多线程模型 用户线程和内核线程...

  • Thread

    队列 线程锁 多线程,线程池 队列 多线程爬虫示例 多线程 自定义线程 线程池

  • 总结多线程与设计模式+synchronized+性能+高吞吐+死

    Java线程 Java语言的线程 何谓线程 线程启动 线程的暂时停止 线程的共享互斥 线程的协调 线程的状态转移 ...

  • 多线程编程

    摘要 线程概念,线程与进程的区别与联系学会线程控制,线程创建,线程终止,线程等待了解线程分离与线程安全学会线程同步...

  • java线程池

    线程VS线程池 普通线程使用 创建线程池 执行任务 执行完毕,释放线程对象 线程池 创建线程池 拿线程池线程去执行...

  • java并发之守护线程

    java中有两种线程,用户线程和守护线程用户线程:主线程停止时,用户线程不会停止守护线程:主线程停止时,守护线程也...

  • Java线程池的使用

    线程类型: 固定线程 cached线程 定时线程 固定线程池使用 cache线程池使用 定时调度线程池使用

  • 线程基础知识

    线程学习 线程的基础知识 线程是什么? 线程和进程的关系 线程的6个状态 线程优先级 主线程、多线程、后台线程的概...

  • 多线程介绍

    一、进程与线程 进程介绍 线程介绍 线程的串行 二、多线程 多线程介绍 多线程原理 多线程的优缺点 多线程优点: ...

网友评论

      本文标题:线程

      本文链接:https://www.haomeiwen.com/subject/lgrueftx.html