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

网站做cpa赚钱吗厦门做网站哪家公司好

网站做cpa赚钱吗,厦门做网站哪家公司好,华强北附近网站建设,综合网站设计python线程相关讲解 在 Python 中,线程(Thread)是实现多任务处理(多线程)的常用手段。通过线程,你可以让程序在同一时间处理多个任务,比如同时下载多个网页、同时处理用户请求等。 下面是对 P…

python线程相关讲解

在 Python 中,线程(Thread)是实现多任务处理(多线程)的常用手段。通过线程,你可以让程序在同一时间处理多个任务,比如同时下载多个网页、同时处理用户请求等。

下面是对 Python 中线程使用的详细讲解,包括基础知识、代码示例、注意事项和常见用法。

一、线程基础

什么是线程?
线程是操作系统能够进行运算调度的最小单位,它被包含在进程中,是进程中的实际运作单位。

Python 中的线程模块
Python 提供了两种线程方式:

  • threading 模块(推荐)
  • thread 模块(已废弃,不推荐使用)

二、使用threading模块创建线程

1. 方式一:函数方式创建线程

import threading
import timedef worker():print(f"[{threading.current_thread().name}] Start")time.sleep(2)print(f"[{threading.current_thread().name}] End")# 创建线程
t1 = threading.Thread(target=worker, name="Thread-1")
t1.start()# 主线程继续执行
print("[MainThread] Continue running...")
t1.join()  # 等待子线程完成
print("[MainThread] Finished")

2. 方式二:继承Thread

class MyThread(threading.Thread):def run(self):print(f"[{self.name}] Start")time.sleep(2)print(f"[{self.name}] End")t = MyThread(name="MyThread")
t.start()
t.join()

三、常用的线程操作方法

方法名说明
start()启动线程
join()阻塞主线程,直到子线程完成
is_alive()判断线程是否还在运行
setDaemon(True)设置为守护线程(主线程结束则强制终止)

四、线程共享数据与锁(thread lock)

线程之间共享全局变量,会产生资源竞争问题,需要加锁

示例:未加锁导致的线程冲突

import threadingcount = 0def add():global countfor _ in range(1000000):count += 1t1 = threading.Thread(target=add)
t2 = threading.Thread(target=add)t1.start()
t2.start()
t1.join()
t2.join()print("最终count:", count)

运行多次后你会发现结果不一定是 2000000,因为 count += 1 不是原子操作

加锁方式

lock = threading.Lock()def safe_add():global countfor _ in range(1000000):with lock:count += 1

五、守护线程(Daemon Thread)

守护线程随主线程一起退出:

def background_task():while True:print("后台运行中...")time.sleep(1)t = threading.Thread(target=background_task)
t.setDaemon(True)  # 设置为守护线程
t.start()time.sleep(3)
print("主线程结束")

六、线程池(推荐方式,Python 3.2+)

使用 concurrent.futures.ThreadPoolExecutor 可以更方便地管理线程

from concurrent.futures import ThreadPoolExecutor
import timedef task(n):print(f"执行任务 {n}")time.sleep(2)return f"任务 {n} 完成"with ThreadPoolExecutor(max_workers=3) as executor:futures = [executor.submit(task, i) for i in range(5)]for f in futures:print(f.result())

✅ 执行逻辑分析

  • 使用线程池最大线程数 max_workers=3,表示最多并发运行 3 个线程。

  • 一共提交了 5 个任务(task(0) 到 task(4))。

  • 每个任务都执行 print(),然后 sleep(2)。

  • f.result() 是一个阻塞调用,会等待对应的任务完成。


文章转载自:

http://OP34y06H.bnrnb.cn
http://HjsH7Tdo.bnrnb.cn
http://8CAChzqs.bnrnb.cn
http://T1tS9cP5.bnrnb.cn
http://MKvSvDGR.bnrnb.cn
http://EiTpl9lf.bnrnb.cn
http://UkHSesPQ.bnrnb.cn
http://Emns95BN.bnrnb.cn
http://iyrgC2gW.bnrnb.cn
http://QnNjUtfY.bnrnb.cn
http://WebUgSkM.bnrnb.cn
http://25ZJkfjz.bnrnb.cn
http://k7xEKBD8.bnrnb.cn
http://RvWSJTW0.bnrnb.cn
http://InWEEix1.bnrnb.cn
http://5P0W40lQ.bnrnb.cn
http://7o4rMSns.bnrnb.cn
http://HQSFlq5S.bnrnb.cn
http://yflWlwim.bnrnb.cn
http://Hvbsgh9Q.bnrnb.cn
http://nX4rKcxU.bnrnb.cn
http://Bo9nxIfR.bnrnb.cn
http://xovC8Vnp.bnrnb.cn
http://ugELgr6f.bnrnb.cn
http://4VpovzKq.bnrnb.cn
http://XZOlWkkG.bnrnb.cn
http://4t6szTc5.bnrnb.cn
http://aKcZjl4T.bnrnb.cn
http://cewZsdLD.bnrnb.cn
http://365AVblT.bnrnb.cn
http://www.dtcms.com/wzjs/741846.html

相关文章:

  • 自学it做网站空间放两个网站
  • 番禺制作网站技术营销型网站建设微博
  • 东莞浩智建设网站公司做个app
  • 顺德高端网站建设50m专线做视频网站
  • 长春做网站多少钱软件应用
  • 网站会员系统怎么做模版king wordpress
  • 深圳网站建设小程序wordpress阿帕奇伪静态
  • 建网站需要多少钱石家庄公众号制作公司
  • html网站自带字体怎么做wordpress 邮件写文章
  • 做公司网站找谁网站建设在商标第几类
  • 北京发布最新公告seo优化排名易下拉试验
  • 域名备案怎么关闭网站备案 网站负责人 法人
  • 怎么建立一个公司网站化妆品网站设计方案
  • 门户网站建设工作情况汇报设计说明的英文
  • 成都网站建设开发公司软件开发平台哪家好
  • 无锡画室网站建设网站开发 如何定位
  • 织梦响应式网站模板织梦网站标题被改
  • 怎样先做网站后买域名电影网站做seo
  • 20个中国风网站设计欣赏建设集团招工信息网站
  • 呼和浩特建设厅网站直播网站开发费
  • 经网站建设是什么经营范围微信公众号网站开发注意
  • 北京app手机网站制作公司网站建设价格
  • 建设高校网站的现实意义odoo网站建设
  • 阿里巴巴做网站营销有没有用电子商务网站建设与管理总结
  • 企业网站如何建设温州可以做驾校推广的网站
  • 网站开发个人工作室信息网站有哪些
  • 用什么做响应式网站春雨app直播免费看
  • 网站没有权重广州自助公司建网站企业
  • 杭州网站搜索排名网站推广优化如何做
  • 网站首屏高度用fullpage做的网站