文档章节

python多线程

陈小扁
 陈小扁
发布于 2016/03/14 15:47
字数 508
阅读 71
收藏 0

1.进程与线程

很多同学都说, 现在很多操作系统如MacOS,Linux, Unix, Windows 都是支持多任务的操作系统, 那么什么叫"多任务"呢? 简单来说, 就是操作系统可以同时运行多个任务, 比如, 你一边用浏览器上网,一边用听歌, 一边看电视, 一边下载文件, 这就是多任务,至少同时有多个任务在后台同时运行着

那么所谓的进程就是一个任务, 比如你打开一个浏览器就是启动一个浏览器进程,打开一个记事本就是启动记事本进程, 有些进程还不止干一件事, 比如你打开浏览器, 一边浏览网页, 一边下载文件, 一边听歌曲, 在一个进程内, 同时执行多个子任务, 我们称这些“子任务”为线程

所以一个进程至少有一个线程, 多个线程可以同时执行, 多任务可以由多进程完成, 也可以由一个进程内多线程完成, 多线程的程序可以提高资源的利用率, 提高系统的执行效率


2.ThreadLocal

多线程和多进程的最大不同在于,多进程中,同一个变量, 各自有一份拷贝存在每个进程中,互不影响, 而多线程中, 所有变量都由线程共享, 任何一个变量都可以被任何一个线程所修改, ThreadLocal 线程局部变量, 一个线程使用自己的局部变量比使用全局变量好,因为不影响其他线程 接下来我们来看一下ThreadLocal的应用:

import threading

# 创建全局ThreadLocal对象
threadLocal = threading.local()


def process():
    # 获取当前线程关联的student
    number = threadLocal.student
    print('Hello %s (in %s)' % (number, threading.current_thread().name))


def process_thread(name):
    # 绑定ThreadLocal的student
    threadLocal.student = name
    process()


t1 = threading.Thread(target=process_thread, args=('Alice',), name='Thread-A')
t2 = threading.Thread(target=process_thread, args=('Bob',), name='Thread-B')

t1.start()
t2.start()
t1.join()
t2.join()


© 著作权归作者所有

上一篇: python正则表达式
下一篇: python IO编程
陈小扁

陈小扁

粉丝 53
博文 87
码字总数 71417
作品 0
浦东
高级程序员
私信 提问

暂无文章

高速PCB设计软件allegro中与网络有关的约束规则设置

在allegro pcb的设计过程中,设计约束规则包括时序规则、间距规则、信号完整性规则以及物理规则等,本期主要详细讲解与物理、间距与电气约束中的线宽、线间距物理规则的设置。 一、线宽设置 ...

demyar
6分钟前
1
0
Linux 启动停止SpringBoot jar 程序部署Shell 脚本

#!/bin/bash #这里可替换为你自己的执行程序,其他代码无需更改 APP_NAME=algorithm.jar #使用说明,用来提示输入参数 usage() { echo "Usage: sh 执行脚本.sh [start|stop|restart|status]...

草庐过客
8分钟前
2
0
mysql-connector-java驱动升级到8.0后数据库保存时间出现时差

1.问题:在一个新项目中用到了新版的mysql jdbc 驱动后,发现保存到数据库的时间出现了时差 <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId>......

ValSong
9分钟前
2
0
好程序员大数据教程Scala系列之隐式转换和隐式参数

5.1. 概念 隐式转换和隐式参数是Scala中两个非常强大的功能,利用隐式转换和隐式参数,你可以提供优雅的类库,对类库的使用者隐匿掉那些枯燥乏味的细节。 5.2. 作用 隐式的对类的方法进行增强...

好程序员官网
14分钟前
1
0
多线程必备

初次接触线程,可能有很多初学者搞不明白,始终云里雾里,那么本篇文章直接带大家介绍多线程必须知道的几个点 接下来没有多余,直接上干货 1. 进程和线程的区别是什么? 进程是执行着的应用程序,...

理性思考
17分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部