Python的多线程,守护线程,线程安全_python多线程安全

这篇具有很好参考价值的文章主要介绍了Python的多线程,守护线程,线程安全_python多线程安全。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

#(1) 一个进程里包含了多个线程,线程之间是异步并发

from threading import Thread
from multiprocessing import Process
import os , time , random

def func(i):
time.sleep(random.uniform(0.1,0.9))
print(“当前进程号:{}”.format(os.getpid()) , i)

if name == “__main__”: #线程里面这句话可以不加
for i in range(10):
t = Thread(target=func,args=(i,))
t.start()

print(os.getpid())

如下可见,子线程中的进程号与主进程号一样,并且子线程和主进程之间是异步并发的
Python的多线程,守护线程,线程安全_python多线程安全,2024年程序员学习,python,安全,开发语言

#(2) 并发的多进程和多线程之间,多线程的速度更快

#多线程速度
def func(i):
print( "当前进程号:{} , 参数是{} ".format(os.getpid() , i) )

if name == “__main__”:
lst = []
startime = time.time()
for i in range(10000):
t = Thread(target=func,args=(i,))
t.start()
lst.append(t)

print(lst)

for i in lst:
i.join()
endtime = time.time()
print(“运行的时间是{}”.format(endtime - startime) ) # 运行的时间是1.8805944919586182

#多进程速度

if name == “__main__”:
lst = []
startime = time.time()
for i in range(10000):
p = Process(target=func,args=(i,))
p.start()
lst.append§

print(lst)

for i in lst:
i.join()
endtime = time.time()
print(“运行的时间是{}”.format(endtime - startime) ) # 运行的时间是101.68004035949707

多进程:1000个进程耗时9.06秒
Python的多线程,守护线程,线程安全_python多线程安全,2024年程序员学习,python,安全,开发语言

多线程:多线程之间,数据共享,可以直接操作数据。1000个线程耗时0.087秒,差距巨大,所以对于IO密集型,还是用多线程较快
Python的多线程,守护线程,线程安全_python多线程安全,2024年程序员学习,python,安全,开发语言

多进程执行计算密集型,如果各个进程间各计算各的,不用共享数据,由于可以使用多核,比多线程快。
如果是各个进程间数据共享,同步计算最终结果,多进程反而非常慢,远远慢于多线程

#(3) 多线程之间,数据共享

num = 100
lst = []
def func():
global num
num -= 1

for i in range(100):
t = Thread(target=func)
t.start()
lst.append(t)

for i in lst:
i.join()

print(num)

多线程之间共享数据,可以直接操作
Python的多线程,守护线程,线程安全_python多线程安全,2024年程序员学习,python,安全,开发语言

2、自定义线程类

#用类定义线程,必须手动调用父类__init__方法,必须重载父类run方法,定义自己线程类逻辑
from threading import Thread
import os,time

(1)必须继承父类Thread,来自定义线程类

class MyThread(Thread):

def __init__(self,name):

手动调用父类的构造方法

super().init()

自定义当前类需要传递的参数

self.name = name

def run(self):
print( “当前进程号{},name={}”.format(os.getpid() , self.name) )

if name == “__main__”:
t = MyThread(“我是线程”)
t.start()
print( “当前进程号{}”.format(os.getpid()) )

新版:
#自定义线程类

from threading import Thread,current_thread

(1)必须继承父类Thread,来自定义线程类

class MyThread(Thread):
def __init__(self,name):

手动调用父类的构造方法

super().init()

自定义当前类需要传递的参数

self.name = name

def run(self):
print(f"当前线程的线程号是{current_thread().ident}")

if name == ‘__main__’:
for i in range(10):
t = MyThread(f"线程{i}")
t.start()

Python的多线程,守护线程,线程安全_python多线程安全,2024年程序员学习,python,安全,开发语言

(2)线程中的相关属性

线程.is_alive() 检测线程是否仍然存在

线程.setName() 设置线程名字

线程.getName() 获取线程名字

1.currentThread().ident 查看线程id号 新版用current_thread().ident

2.enumerate() 返回目前正在运行的线程列表

3.activeCount() 返回目前正在运行的线程数量

getName,setName被弃用了
Python的多线程,守护线程,线程安全_python多线程安全,2024年程序员学习,python,安全,开发语言

新版:
Python的多线程,守护线程,线程安全_python多线程安全,2024年程序员学习,python,安全,开发语言

def func():
time.sleep(1)
if name == “__main__”:
t = Thread(target=func)
t.start()

检测线程是否仍然存在

print( t.is_alive() )

线程.getName() 获取线程名字

print(t.getName())

设置线程名字

t.setName(“抓API接口”)
print(t.getName())

from threading import currentThread
from threading import enumerate
from threading import activeCount
def func():
time.sleep(0.1)
print(“当前子线程号id是{},进程号{}”.format( currentThread().ident ,os.getpid()) )

if name == “__main__”:
t = Thread(target=func)
t.start()
print(“当前主线程号id是{},进程号{}”.format( currentThread().ident ,os.getpid()) )

for i in range(5):
t = Thread(target=func)
t.start()

返回目前正在运行的线程列表

lst = enumerate()
print(lst,len(lst))

返回目前正在运行的线程数量 (了解)

print(activeCount())

新版:

### 线程中的相关属性

import time
from threading import Thread,current_thread
from threading import enumerate
from threading import active_count

def func():
time.sleep(1)
print(f"当前子线程的线程号{current_thread().ident}")

if name == ‘__main__’:
for i in range(5):
t = Thread(target=func)
t.start()
#设置线程名
t.name = f"抓API接口{i}"

返回目前正在运行的线程列表

lst = enumerate()
print(lst,len(lst))

返回目前正在运行的线程数量 (了解)

print(active_count())

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数网络安全工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年网络安全全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
Python的多线程,守护线程,线程安全_python多线程安全,2024年程序员学习,python,安全,开发语言
Python的多线程,守护线程,线程安全_python多线程安全,2024年程序员学习,python,安全,开发语言
Python的多线程,守护线程,线程安全_python多线程安全,2024年程序员学习,python,安全,开发语言
Python的多线程,守护线程,线程安全_python多线程安全,2024年程序员学习,python,安全,开发语言
Python的多线程,守护线程,线程安全_python多线程安全,2024年程序员学习,python,安全,开发语言
Python的多线程,守护线程,线程安全_python多线程安全,2024年程序员学习,python,安全,开发语言

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上网络安全知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加VX:vip204888 (备注网络安全获取)
Python的多线程,守护线程,线程安全_python多线程安全,2024年程序员学习,python,安全,开发语言

本人从事网路安全工作12年,曾在2个大厂工作过,安全服务、售后服务、售前、攻防比赛、安全讲师、销售经理等职位都做过,对这个行业了解比较全面。

最近遍览了各种网络安全类的文章,内容参差不齐,其中不伐有大佬倾力教学,也有各种不良机构浑水摸鱼,在收到几条私信,发现大家对一套完整的系统的网络安全从学习路线到学习资料,甚至是工具有着不小的需求。

最后,我将这部分内容融会贯通成了一套282G的网络安全资料包,所有类目条理清晰,知识点层层递进,需要的小伙伴可以点击下方小卡片领取哦!下面就开始进入正题,如何从一个萌新一步一步进入网络安全行业。

Python的多线程,守护线程,线程安全_python多线程安全,2024年程序员学习,python,安全,开发语言

学习路线图

其中最为瞩目也是最为基础的就是网络安全学习路线图,这里我给大家分享一份打磨了3个月,已经更新到4.0版本的网络安全学习路线图。

相比起繁琐的文字,还是生动的视频教程更加适合零基础的同学们学习,这里也是整理了一份与上述学习路线一一对应的网络安全视频教程。

Python的多线程,守护线程,线程安全_python多线程安全,2024年程序员学习,python,安全,开发语言

网络安全工具箱

当然,当你入门之后,仅仅是视频教程已经不能满足你的需求了,你肯定需要学习各种工具的使用以及大量的实战项目,这里也分享一份我自己整理的网络安全入门工具以及使用教程和实战。

Python的多线程,守护线程,线程安全_python多线程安全,2024年程序员学习,python,安全,开发语言

项目实战

最后就是项目实战,这里带来的是SRC资料&HW资料,毕竟实战是检验真理的唯一标准嘛~

Python的多线程,守护线程,线程安全_python多线程安全,2024年程序员学习,python,安全,开发语言

面试题

归根结底,我们的最终目的都是为了就业,所以这份结合了多位朋友的亲身经验打磨的面试题合集你绝对不能错过!

一个人可以走的很快,但一群人才能走的更远。如果你从事以下工作或对以下感兴趣,欢迎戳这里加入程序员的圈子,让我们一起学习成长!

AI人工智能、Android移动开发、AIGC大模型、C C#、Go语言、Java、Linux运维、云计算、MySQL、PMP、网络安全、Python爬虫、UE5、UI设计、Unity3D、Web前端开发、产品经理、车载开发、大数据、鸿蒙、计算机网络、嵌入式物联网、软件测试、数据结构与算法、音视频开发、Flutter、IOS开发、PHP开发、.NET、安卓逆向、云计算文章来源地址https://www.toymoban.com/news/detail-844942.html

不能错过!

一个人可以走的很快,但一群人才能走的更远。如果你从事以下工作或对以下感兴趣,欢迎戳这里加入程序员的圈子,让我们一起学习成长!

AI人工智能、Android移动开发、AIGC大模型、C C#、Go语言、Java、Linux运维、云计算、MySQL、PMP、网络安全、Python爬虫、UE5、UI设计、Unity3D、Web前端开发、产品经理、车载开发、大数据、鸿蒙、计算机网络、嵌入式物联网、软件测试、数据结构与算法、音视频开发、Flutter、IOS开发、PHP开发、.NET、安卓逆向、云计算

到了这里,关于Python的多线程,守护线程,线程安全_python多线程安全的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 编程小白的自学笔记八(python中的多线程)

     编程小白的自学笔记七(python中类的继承) 编程小白的自学笔记六(python中类的静态方法和动态方法)  编程小白的自学笔记五(Python类的方法)  编程小白的自学笔记四(正则表达式模块search函数)  编程小白的自学笔记三(Python正则表达式)  目录 系列文章目录 前言

    2024年02月16日
    浏览(49)
  • Python的多线程和多进程(通过故事来学习)

    曾经有一个名叫小明的开发者,他正在开发一个需要同时处理多个任务的应用程序。他知道,如果使用单线程处理这些任务,可能会导致应用程序变得非常缓慢。于是,他决定在自己的 Python 应用程序中使用多线程和多进程来提高处理能力。 小明首先学习了 Python 的多线程编

    2024年02月07日
    浏览(50)
  • 一种在 Python 中实现更快 OpenCV 视频流的多线程方法

    概述 在本文中,我们将看到两个没有多线程的 Python 代码示例,用于从摄像头读取视频帧。我们将看到使用/不使用多线程获得的 FPS 的差异。 什么是多线程? 线程是进程中的一个执行单元。多线程是指通过在线程之间快速切换对 CPU 的控制(称为上下文切换)来并发执行多个

    2024年02月16日
    浏览(57)
  • Java中的多线程——线程安全问题

    作者:~小明学编程   文章专栏:JavaEE 格言:热爱编程的,终将被编程所厚爱。 目录 多线程所带来的不安全问题 什么是线程安全 线程不安全的原因 修改共享数据 修改操作不是原子的 内存可见性对线程的影响 指令重排序 解决线程不安全的问题 synchronized 互斥 刷新内

    2024年02月03日
    浏览(81)
  • Qt QQueue 安全的多线程队列、阻塞队列

    在C++中,queue是一个模板类,用于实现队列数据结构,遵循先进先出的原则。 ♦ 常用方法: · ♦ 简单使用: · ♦ 打印: · QQueue 继承与 QList ♦ 常用方法: · ♦ 实例: · ♦ 打印: · 在多线程编程中,由于QQueue并不是线程安全的,因此我们需要先使用互斥锁(QMutex)来保

    2024年02月16日
    浏览(39)
  • Java 8并发集合:安全高效的多线程集合

    在多线程环境中,使用线程安全的数据结构非常重要,以避免竞态条件和数据不一致的问题。Java 8引入了一些并发集合类,提供了安全高效的多线程集合操作。本教程将介绍Java 8中的并发集合类,包括ConcurrentHashMap、ConcurrentLinkedQueue、ConcurrentSkipListSet和CopyOnWriteArrayList。 Conc

    2024年02月04日
    浏览(55)
  • python算法指南程序员经典,python算法教程pdf百度云

    大家好,小编来为大家解答以下问题,你也能看懂的python算法书 pdf,python算法教程这本书怎么样,现在让我们一起来看看吧!   给大家带来的一篇关于算法相关的电子书资源,介绍了关于算法、详解、算法基础方面的内容,本书是由人民邮电出版社出版,格式为PDF,资源大

    2024年02月14日
    浏览(47)
  • [学习笔记]黑马程序员python教程

    1.9.1异常的捕获 1.9.1.1 为什么要捕获异常 1.9.1.2 捕获常规的异常 1.9.1.3 捕获指定的异常 e是接受异常信息的变量 1.9.1.4 捕获多个异常 1.9.1.5 捕获全部异常 1.9.1.6 异常的else 1.9.1.7 异常的finally 1.9.2 异常的传递 如果异常是在某一层产生,但是没有被catch,那么会继续往上层抛出,此

    2024年02月07日
    浏览(74)
  • Python黑马程序员(Spark实战)笔记

     pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pyspark 注意:字符串返回的是[\\\'a\\\',\\\'b\\\',\\\'c\\\',\\\'d\\\',\\\'e\\\',\\\'f\\\',\\\'g\\\']   字典返回的是[\\\'key1\\\',\\\'key2\\\']   读取hello.txt的内容: 注意: 如果没有添加上行代码程序会报出错误! Caused by: org.apache.spark.SparkException: Python worker failed to connect back.  解释器的位置

    2024年02月05日
    浏览(87)
  • Flink原理解析,Python程序员必看

    容错机制 ​ 分布式环境下的流式处理平台相对于批处理平台而言,一个非常重要的问题是如何 保证分布式计算节点在发生故障并恢复后最终的计算结果是正确的 。在批处理的模式下,数据有界,在任务开始前我们就可以得到需要计算的所有数据,如果节点出错,最坏的情况

    2024年04月09日
    浏览(66)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包