多线程

t = threading.Thread(target, args) 创建线程
t.start() 开始线程
t.join() 阻塞线程知道t线程结束

import time
import threadingdef target(second):print(f"{threading.current_thread().name} {second}s")time.sleep(second)print(f"{threading.current_thread().name} end")if __name__ == '__main__':print(f"{threading.current_thread().name}")  # 打印线程名称t1 = time.time()for i in [1, 3, 5, 7]:t = threading.Thread(target=target, args=[i])  # 创建多线程t.start()   # 线程开始# t.join()    # 等待线程结束才开始下一个线程t2 = time.time()print(t2-t1)

守护进程:这个进程是不重要的,主线程结束之后,守护进程强制结束。
t2 = threading.Thread(target, args)
t2.setDaemon(True)#Daemon是守护进程的意思
t2.start()

import time
import threadingdef target(second):print(f"{threading.current_thread().name} {second}s")time.sleep(second)print(f"{threading.current_thread().name} end")if __name__ == '__main__':print(f"{threading.current_thread().name}")  # 打印线程名称t1 = threading.Thread(target=target, args=[1])t1.start()t2 = threading.Thread(target=target, args=[2])t2.setDaemon(True)  # 把t2线程设置为守护进程t2.start()print('MainTread end !')

t.start()只能调用一次,调用后会执行类中的run()函数,当继承threading.Thread类时,run函数重写。

lock = threading.Lock() 创建锁
lock.acquire() # 获取锁
lock.release() # 释放锁

import time
import threadingclass MyThread(threading.Thread):def __init__(self):threading.Thread.__init__(self)def run(self):global countlock.acquire()  # 获取锁tmp = count + 1time.sleep(0.001)count = tmplock.release()  # 释放锁if __name__ == '__main__':print(f"{threading.current_thread().name}")  # 打印线程名称lock = threading.Lock()  # 创建锁threads = []count = 0for _ in range(1000):t = MyThread()t.start()threads.append(t)for thread in threads:thread.join()print(count)print('MainTread end !')

python有GIL全局解释器锁,在单核或多核情况下只能运行一个线程。(线程开始获取GIL,结束释放GIL,一般单核同一时刻只能运行一个线程,多核同一时刻运行多个线程)

python多线程运用相关推荐

  1. Python多线程(3)——Queue模块

    Python多线程(3)--Queue模块 Queue模块支持先进先出(FIFO)队列,支持多线程的访问,包括一个主要的类型(Queue)和两个异常类(exception classes). Pyth ...

  2. python统计csv行数_对Python 多线程统计所有csv文件的行数方法详解

    如下所示: #统计某文件夹下的所有csv文件的行数(多线程) import threading import csv import os class MyThreadLine(threading.Th ...

  3. c++主线程等待子线程结束_简单明了的 Python 多线程来了 | 原力计划

    作者 | 万里羊责编 | 王晓曼出品 | CSDN博客线程和进程计算机的核心是CPU,它承担了所有的计算任务,就像是一座工厂在时刻运行.如果工厂的资源有限,一次只能供一个车间来使用,也就是说当一个车间 ...

  4. python3 多线程_图解|为什么 Python 多线程无法利用多核

    (给Python开发者加星标,提升Python技能) 来源:后端技术指南针 1.全局解释锁 如题: Python的多线程为什么不能利用多核处理器? 全局解释器锁(Global Interpreter ...

  5. python多线程下的信号处理程序示例

    下面是一个网上转载的实现思路,经过验证,发现是可行的,就记录下来. 思路 python多线程中要响应Ctrl+C的信号以杀死整个进程,需要: 1.把所有子线程设为Daemon: 2.使用isAlive ...

  6. Python 多线程抓取网页 牛人 use raw socket implement http request great

    Python 多线程抓取网页 - 糖拌咸鱼 - 博客园 Python 多线程抓取网页 最近,一直在做网络爬虫相关的东西. 看了一下开源C++写的larbin爬虫,仔细阅读了里面的设计思想和一些关键技术 ...

  7. python 多线程编程之_thread模块

    python 多线程编程之_thread模块 参考书籍:python核心编程 _thread模块除了可以派生线程外,还提供了基本的同步数据结构,又称为锁对象(lock object,也叫原语锁.简单锁 ...

  8. python多线程读取文件的问题_Python多线程同步---文件读写控制方法

    1.实现文件读写的文件ltz_schedule_times.py #! /usr/bin/env python #coding=utf-8 import os def ReadTimes(): res ...

  9. c语言多线程转python多线程,真正的python 多线程!一个修饰符让你的多线程和C语言一样快...

    > Python 多线程因为GIL的存在,导致其速度比单线程还要慢.但是近期我发现了一个相当好用的库,这个库只需要增加一个修饰符就可以使原生的python多线程实现真正意义上的并发.本文将和大家 ...

  10. python 多线程和协程结合_一文讲透 “进程、线程、协程”

    本文从操作系统原理出发结合代码实践讲解了以下内容: 什么是进程,线程和协程? 它们之间的关系是什么? 为什么说Python中的多线程是伪多线程? 不同的应用场景该如何选择技术方案? ... 什么是进程 ...

最新文章

  1. 贪吃蛇计时器怎么编写java_java编写简易贪吃蛇游戏
  2. 沪港通:利好出尽就是利空
  3. Lambda and Anonymous Classes
  4. 【UVA11324】The Largest Clique (SCC)
  5. linux服务器最大连接数
  6. 我只注视你全cg存档_科幻国漫持续推出,全CG动画星骸骑士首播,这一次吞噬星空输了...
  7. as3实现(可以操纵的)真正的由惯性导致的漂移
  8. JAVA获取各种日期时间
  9. mysql什么是主键和外键?
  10. 《软件工程导论》第一章
  11. The client-side rendered virtual DOM tree is not matching server-rendered content
  12. Kotlin入门-数据类与密封类 的解脱,由繁至简
  13. Oracle中实现分页
  14. HTML:给你的表单设置边框!
  15. 【图像融合】基于非下采样剪切波变换(NSST)实现红外图像和可见光图像融合matlab代码
  16. Python 模拟双色球抽奖
  17. iOS - 动态库上架瘦身(去调虚拟机架构),不然验证会报错。
  18. 绘画艺术的“唯物主义”和“唯心主义”
  19. java String中文字符串分割成数组 中文字符串分割成一定长度的字符串数组
  20. DETA10惯性导航产品介绍

热门文章

  1. ES6新特性_ES6对象的简化写法---JavaScript_ECMAScript_ES6-ES11新特性工作笔记008
  2. k8s核心技术-持久化存储(nfs网络存储)---K8S_Google工作笔记0050
  3. Netty工作笔记0056---Unpooled应用实例2
  4. 设置MYSQL数据库编码为UTF-8:
  5. php下拉列表框 是隐藏变色的代码,jQuery设置下拉框显示与隐藏效果的方法分析...
  6. Linux中nginx安装基础教程
  7. PHP window2003服务和2008服务器上传个别文件访问报错
  8. 随想录(fatfs的学习)
  9. js 给服务器发消息,的Node.js:发送消息至服务器
  10. linux远程测试题,linux内训考试题及答案