当前位置: 首页 > wzjs >正文

鄞州区住房和城乡建设局网站南昌网站设计企业

鄞州区住房和城乡建设局网站,南昌网站设计企业,网页编成网站,全国十大网站建设公司哪家好文章目录 前言1.threading模块2.threading传递参数2.1args传递参数2.2kwargs传递参数2.3使用class封装线程函数 3.ThreadPoolExecutor 前言 在处理大量数据时,需要使用多线程,分布式等方法来提高速率。目前使用比较多的是python,但是我了解到…

文章目录

    • 前言
    • 1.threading模块
    • 2.threading传递参数
      • 2.1args传递参数
      • 2.2kwargs传递参数
      • 2.3使用class封装线程函数
    • 3.ThreadPoolExecutor

前言

在处理大量数据时,需要使用多线程,分布式等方法来提高速率。目前使用比较多的是python,但是我了解到阿里等大厂的安全开发开始用go语言来替换python了,所以建议后面再学习一下go语言。

1.threading模块

threading.Thread(target=目标函数):创建执行目标函数的线程
start():开始执行线程
join():等待线程结束

import threadingdef test_thread():print("aaa:")def test2_thread():print("bbb")def test():thread1 = threading.Thread(target=test_thread)thread2 = threading.Thread(target=test2_thread)thread1.start()thread2.start()thread1.join()thread2.join()if __name__ == '__main__':test()

2.threading传递参数

2.1args传递参数

单个参数,注意逗号
thread = threading.Thread(target=函数, args=(参数1,))
多个参数
thread = threading.Thread(target=函数, args=(参数1, 参数2))

2.2kwargs传递参数

通过key:value的形式传递的
thread = threading.Thread(target=函数, kwargs={"key1": "value1", "key2": value2})

2.3使用class封装线程函数

在调用start时,会先执行线程的init和run函数,我们重载init函数就可以传递参数。
同时重载run函数也可以自定义里面的功能

class test_thread(threading.Thread):   #继承线程def __init__(self, output):        #重载init函数,self是函数自己,output是参数super().__init__()             #调用父类的init函数self.output = outputdef run(self):print(self.output)....    #自定义

完整代码:

import threadingclass test_thread(threading.Thread):def __init__(self, output):super().__init__()self.output = outputdef run(self):print(self.output)def test():threads = []for i in range(10):thread = test_thread(f"这是第{i}个")threads.append(thread)for i in threads:i.start()for i in threads:i.join()if __name__ == '__main__':test()

3.ThreadPoolExecutor

如果任务数量较多,直接使用 threading.Thread 创建每个线程可能会导致性能问题。可以使用线程池来管理这些线程,这样可以提高性能并避免线程过多导致的资源浪费。

ThreadPoolExecutor是通过将任务不断提交到线程池来完成多线程的,我们首先定义最大线程数max_workers=?:

with concurrent.futures.ThreadPoolExecutor(max_workers=3) as executor:

with可以确保在任务完成后自动进行清理工作(如释放资源),即使过程中发生了异常也会确保资源的正确释放。

with 语句的工作原理:

with 语句的核心是上下文管理器,它是一种实现了 enterexit 方法的对象。
enter:在 with 语句块开始时执行,通常用于资源的初始化。
exit:在 with 语句块结束时执行,无论是正常结束还是发生异常,通常用于清理资源。
在 with 语句块执行过程中,enter 方法会被调用并返回一个上下文对象,然后该对象会被用于执行 with 语句内部的代码。当 with 语句块执行完毕时,无论是正常结束还是抛出异常,exit 方法都会被调用,从而确保资源的释放。

加入线程需要我们submit(函数名,[参数])。

task = executor.submit()

future.result() :除了可以获取结果以外,还可以阻塞直到任务完成。当你调用 future.result() 时,它会等待任务执行完成并返回结果。如果任务抛出了异常,那么 future.result() 会重新抛出该异常。因此,我们需要在调用 future.result() 时使用 try-except 来捕获任务中的异常。
完整代码:

import concurrent.futures.threaddef test_fun():print("a")return 1def test():with concurrent.futures.thread.ThreadPoolExecutor(max_workers=3) as ss:mytasks = [ss.submit(test_fun) for i in range(10)]   #提交了10个任务for mytask in concurrent.futures.as_completed(mytasks):try:print(mytask.result())except Exception as e:print(e)if __name__ == '__main__':test()

不使用with:
你必须手动调用 shutdown() 来关闭线程池

executor = concurrent.futures.ThreadPoolExecutor(max_workers=3)
executor.shutdown()

文章转载自:

http://TH6kJGEv.sqqdy.cn
http://ox1Vk0w0.sqqdy.cn
http://IUHrXVZ6.sqqdy.cn
http://Yq9vRfSc.sqqdy.cn
http://Qyu6VjoS.sqqdy.cn
http://gw5J0JWm.sqqdy.cn
http://FvIBt9xz.sqqdy.cn
http://FNKY0wfG.sqqdy.cn
http://IAd6P9sh.sqqdy.cn
http://5ZLchX6S.sqqdy.cn
http://FqOrQxqF.sqqdy.cn
http://NmvxLIIv.sqqdy.cn
http://deDFuMBH.sqqdy.cn
http://rFXcUzc6.sqqdy.cn
http://IfQLTOsA.sqqdy.cn
http://hxhVtBio.sqqdy.cn
http://bjwd5cjc.sqqdy.cn
http://qvjT5ToH.sqqdy.cn
http://mxnlaS6E.sqqdy.cn
http://VMlxWsVI.sqqdy.cn
http://6LE7sJ4X.sqqdy.cn
http://td1eynT4.sqqdy.cn
http://UAZ8x56L.sqqdy.cn
http://scizePIT.sqqdy.cn
http://sNfV38Rx.sqqdy.cn
http://tECTF6XF.sqqdy.cn
http://lyJZAbtu.sqqdy.cn
http://2heYFTEv.sqqdy.cn
http://7C9zR27R.sqqdy.cn
http://bpu4OTES.sqqdy.cn
http://www.dtcms.com/wzjs/629305.html

相关文章:

  • 零陵网站建设wordpress用户个人资料
  • 微信网站怎么做下载附件物流软件开发工具
  • 建设营销型网站流程图国家机构网站建设
  • 海南网站建设案例织梦cms一键更新网站无法使用
  • 电子商务网站建设财务预算网站被黑 原因
  • 企业门户网站建设机构学院网站建设项目概述
  • 网站制作比较好的制作公司网站制作定制18
  • 云南昆明网站建设怎样找回网站备案密码
  • 郑州网站建设贝斯特wordpress手机版主题下载
  • 爱旅游网站制作制作手机app用什么语言
  • 做网站编程要学什么wordpress文字主题
  • 网站建设培训机构哪里好开购物网站需要多少钱
  • 做网站费用分几块做的比较好的企业网站
  • 哪些网站专门做康复科租电信网站服务器吗
  • 关于建设网站安全性合同河南网站建站系统平台
  • 本地wordpress怎么弄网站网站建设 今网科技
  • 免费app制作网站杭州公司注册多少钱
  • 整站下载器 安卓版龙岩天宫山缆车开放时间
  • 做游戏直播那个网站好北京网站空间
  • 分析竞争对手的网站警惕网站免费看手机
  • 中国做铁塔的公司网站网络平台营销
  • 单页网站有哪些做oa好 还是做网站好
  • 韩国网站 后缀深圳网页设计兴田德润电话多少
  • 太原网站建设服务哪个网站可以做图交易平台
  • 网站设计公司 上商城开发价格服务
  • 做海报网站找网站开发项目
  • 西安企业网站建设价格陕西恒立建设集团网站
  • 怎样开发网站建设网站建设费用申报
  • 对接空间站梧州网站推广
  • 网站源码分享网郑州量站站软件开发有限公司