Python的多线程,保卫线程,线程安全_python多线程安全

打印 上一主题 下一主题

主题 538|帖子 538|积分 1614

#(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())
如下可见,子线程中的进程号与主进程号一样,而且子线程和主进程之间是异步并发的

#(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秒

多线程:多线程之间,数据共享,可以直接操纵数据。1000个线程耗时0.087秒,差距巨大,以是对于IO麋集型,还是用多线程较快

多进程执行计算麋集型,如果各个进程间各计算各的,不用共享数据,由于可以利用多核,比多线程快。
如果是各个进程间数据共享,同步计算最终效果,多进程反而非常慢,远远慢于多线程
#(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)
多线程之间共享数据,可以直接操纵

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()

(2)线程中的相关属性

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

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

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

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

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

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

getName,setName被弃用了

新版:

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年网络安全全套学习资料》,初衷也很简单,就是希望能够资助到想自学提拔又不知道该从何学起的朋侪。






既有适合小白学习的零底子资料,也有适合3年以上履历的小伙伴深入学习提拔的进阶课程,基本涵盖了95%以上网络安全知识点,真正体系化!
由于文件比力大,这里只是将部分目录大纲截图出来,每个节点内里都包罗大厂面经、学习条记、源码课本、实战项目、讲解视频,而且后续会持续更新
如果你以为这些内容对你有资助,可以添加VX:vip204888 (备注网络安全获取)

本人从事网路安全工作12年,曾在2个大厂工作过,安全服务、售后服务、售前、攻防角逐、安全讲师、销售司理等职位都做过,对这个行业相识比力全面。
近来遍览了各种网络安全类的文章,内容参差不齐,其中不伐有大佬倾力讲授,也有各种不良机构乘虚而入,在收到几条私信,发现大家对一套完整的系统的网络安全从学习路线到学习资料,甚至是工具有着不小的需求。
最后,我将这部分内容融会贯通成了一套282G的网络安全资料包,所有类目条理清楚,知识点层层递进,需要的小伙伴可以点击下方小卡片领取哦!下面就开始进入正题,怎样从一个萌新一步一步进入网络安全行业。

学习路线图

其中最为瞩目也是最为底子的就是网络安全学习路线图,这里我给大家分享一份打磨了3个月,已经更新到4.0版本的网络安全学习路线图。
相比起繁琐的文字,还是生动的视频教程更加适合零底子的同砚们学习,这里也是整理了一份与上述学习路线一一对应的网络安全视频教程。

网络安全工具箱

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

项目实战

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

口试题

归根结底,我们的最终目的都是为了就业,以是这份结合了多位朋侪的亲身履历打磨的口试题合集你绝对不能错过!
一个人可以走的很快,但一群人才能走的更远。如果你从事以下工作或对以下感兴趣,接待戳这里参加程序员的圈子,让我们一起学习成长!
AI人工智能、Android移动开辟、AIGC大模型、C C#、Go语言、Java、Linux运维、云计算、MySQL、PMP、网络安全、Python爬虫、UE5、UI设计、Unity3D、Web前端开辟、产物司理、车载开辟、大数据、鸿蒙、计算机网络、嵌入式物联网、软件测试、数据结构与算法、音视频开辟、Flutter、IOS开辟、PHP开辟、.NET、安卓逆向、云计算
不能错过!
一个人可以走的很快,但一群人才能走的更远。如果你从事以下工作或对以下感兴趣,接待戳这里参加程序员的圈子,让我们一起学习成长!
AI人工智能、Android移动开辟、AIGC大模型、C C#、Go语言、Java、Linux运维、云计算、MySQL、PMP、网络安全、Python爬虫、UE5、UI设计、Unity3D、Web前端开辟、产物司理、车载开辟、大数据、鸿蒙、计算机网络、嵌入式物联网、软件测试、数据结构与算法、音视频开辟、Flutter、IOS开辟、PHP开辟、.NET、安卓逆向、云计算

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

民工心事

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表