python主线程有两个子线程、创建两个主函数_Python多任务之线程
1.1. 线程
threading.Thread(target = 函数名)
线程的运行是没有先后顺序的
主线程死了,子线程必死。子线程结束后,子线程会给子线程收尸。
当调用Thread的时候,不会创建线程;当调用Thread创建的实例对象的start()时,才会创建线程以及让这个线程开始运行
1.1.1. 概念
python中 import threading
线程(thread)是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。线程是独立调度和分派的基本单位。线程可以为操作系统内核调度的内核线程,如Win32线程;由用户进程自行调度的用户线程,如Linux平台的POSIX Thread;或者由内核与用户进程,如Windows 7的线程,进行混合调度。同一进程中的多条线程将共享该进程中的全部系统资源,如虚拟地址空间,文件描述符和信号处理等等。但同一进程中的多个线程有各自的调用栈(call stack),自己的寄存器环境(register context),自己的线程本地存储(thread-local storage)。
· 子线程与子线程共享全局变量
· 更改全局变量,必须用global吗
在一个函数中,对全局变量进行修改时,到底是否需要使用global进行说明要看是否对全局变量得执行指向进行了修改。
如果修改了指向,既让全局变量指向一个新的地方。那么必须使用global。如果,仅仅是修改指向的空间中的数据,此时不用必须使用global
· 资源竞争
如果多线程
· 线程同步
同步就是协同步调,按预定的先后次序进行运行。
能够保证线程安全的访问竞争资源,最简单的同步机制就是引入互斥锁
· 互斥锁
当多个线程几乎同时修改某一个共享数据的时候,需要进行同步控制。
某个线程要更改共享数据时,先将其锁定,此时资源的状态为“锁定”,其他线程不能修改;直到该线程释放资源,将资源的状态变成“非锁定”,其他线程才能再次锁定该资源,互斥锁保证了每次只有一个线程进行写入操作,从而保证了多线程情况下数据的正确性。
· 死锁
在线程间共享多个资源的时候,如果两个线程分别占有一部分的资源,就会造成死锁
1.1.2. 创建线程
· 指定函数为线程
t1 = threading.Thread ( target = 函数名)
t1.start()
· 指定类为线程
首先创建类的时候需要继承threading.Thread,在类里需要一个run()对象
因为继承,所以直接使用对象调用start(),而使用start()时会调用run()
class ss(threading.Thread):
def run():
pass
s1 = ss()
s1.start()
创建一个对象,只能创建一个线程,一个线程只能执行一个函数
· 传参数
t1 = threading,Thread(target = 函数名, args = (gl_list , ) )
传的是元组,当参数为一个的时候,不要忘记,
1.1.3. 常用函数
threading.enumerate()
mutex = threading.Lock()
mutex.acquire()
mutex.release()
python主线程有两个子线程、创建两个主函数_Python多任务之线程相关推荐
- python主线程和子线程_python 在threading中如何处理主进程和子线程的关系
之前用python的多线程,总是处理不好进程和线程之间的关系.后来发现了join和setDaemon函数,才终于弄明白.下面总结一下. 1.使用join函数后,主进程会在调用join的地方等待子线程结 ...
- 主线程等待几个子线程执行完成方案
有时,为了程序的性能,我们有必要对程序中的for循环(含有sql/rpc操作)进行并发处理,要求是并发处理完之后才能继续执行主线程.现给出如下两种方案: 1. CountDownLatch Java代 ...
- python主线程执行_python 并发执行之多线程
正常情况下,我们在启动一个程序的时候.这个程序会先启动一个进程,启动之后这个进程会拉起来一个线程.这个线程再去处理事务.也就是说真正干活的是线程,进程这玩意只负责向系统要内存,要资源但是进程自己是不干 ...
- python主线程执行_在Django vi中的主线程中执行Python函数
我创建了Django视图"graph",目的是显示从matplotlib.pyplot模块.我编写了我的函数plot\u bubbles(返回amatplotlib.figure. ...
- python创建文件对象的函数_Python 文件对象常用内建方法
学习python教程文件操作时,除了 文件对象读取内容 file.read(size):size为读字节的长度,默认为-1. file.readline(size):逐行读取,如果定义了size参数, ...
- python程序一定要有主函数_Python 没有main函数的原因
毫无疑问 Python 中没有所谓的 main 入口函数,但是网上经常看到一些文章提"Python 的 main 函数"."建议写 main 函数"-- 有些人 ...
- python主线程执行_Python队列 – 最多运行n个线程
场景: 我有一个非常大的数据库模型迁移正在进行新的构建,我正在研究如何将Web应用程序中的当前实时数据迁移到本地测试数据库中. 我想在python中设置一个脚本,它将同时处理我的模型的迁移.我的模型实 ...
- python 主线程 等待 子线程 知乎_[Python] 知乎多线程爬虫
知乎多线程爬取问题: 自打放了寒假,我就一直想把系统的学习一遍Python爬虫的知识.因为以前只是零碎的学习,造成许多东西都只是一知半解. 项目灵感来源是觉得单曲循环的歌至少让一个人曾经在聆听中感动过 ...
- python创建文件对象的函数_Python学习笔记之—— File(文件) 对象常用函数
file 对象使用 open 函数来创建,下表列出了 file 对象常用的函数: 1.file.close() close() 方法用于关闭一个已打开的文件.关闭后的文件不能再进行读写操作, 否则会触 ...
最新文章
- BPMF论文辅助笔记: 固定U,更新θU 部分推导
- 多线程java_Java多线程基础
- JSON-B非对称属性绑定
- hibernate中*.hbm.xml配置文件的各种映射关系配置方法(多对一,多对多)
- 95-290-360-源码-内存管理-Buffer-ByteBufferPool简介
- python向excel写数据_Python向excel中写入数据的方法
- matlab语言主要功能,2014年秋季学期《MATLAB语言及应用》课程试题-2
- MySQL集群架构:MHA+MySQL-PROXY+LVS实现MySQL集群架构高可用/高性能-技术流ken
- 图神经网络(GCN)
- 用Java实现一个学生管理系统(附源码)
- SpringBoot 2.X Redis Jackson 序列化配置
- Cocoa-Cocoa框架
- java8的Effectively final
- PyPI--python软件仓储库
- Altium Designer 14.1.5 Build 30772
- 免费资源跟IT常用链接
- getaddrinfo EAI_AGAIN xxx.com
- 后疫情时代,便利店还好吗?
- pycharm 总弹出modify setUp的解决办法
- Java高级开发0-1项目实战-青鸟商城-Day02
热门文章
- 用闭包实现重载的过程学习闭包
- 手动清空Element Select选择框内容 v-model 和 option下拉框选项 导致无法select选中,或者选中视图不渲染问题,
- 异步编程的 async/await
- linux克隆出现mac地址错误
- 2017 多校2 hdu 6053 TrickGCD
- 说说第二次配置Ubuntu14.04
- Android 内存泄漏总结文档
- Php输出Xml报错:XML declaration allowed only at the start of the document
- 分布式系统学习资料(ing)
- HTTP 错误 404.13 - Not Found 请求筛选模块被配置为拒绝超过请求内容长度的请求