多线程处理

1、进程和线程的概念

线程: 线程(Thread)是操作系统能够进行运算的最小单位,它被包含在进程之中,是进程中的实际运作单位。
进程: 进程拥有独立的系统资源,该进程下的所有线程共享所拥有的全部资源,线程之间可以并发执行。Python默认为单线程运行。
普通函数和多线程启动的区别:

# 普通函数
def display( count ):
    for i in range(1, count + 1):
        print(i, end="")
        time.sleep(1)
        
print("运行结果:")  # 123451234512345
for i in range(3):
    display(5)

# 多线程启动
import time
import threading
def display( count ):
    for i in range( 1, count + 1 ):
        print( i, end="" )
        time.sleep( 1 )
for i in range( 3 ):
    s = threading.Thread( target=display, args=(5,) )
    s.start()
# 111222333444555
  • 使用多线程我们需要导入 threading 包
  • 把它封装在一个类里面,实例化对象进行调用

2、主线程和子线程

主线程: 当一个程序启动时,就有一个进程被系统创建,与此同时一个线程也会被运行,该线程通常叫做程序主线程,也就是说,程序启动就会创建一个主线程。
作用为:1、产生其他子线程的线程;2、最后完成执行。

子线程: 程序执行的一条分支,当子线程启动后会和主线程一起同时执行。
线程的阻塞:

def display1():
    for i in range(1, 6):
    # 把主线程的名字设置为:主线程
        threading.current_thread().name = "主线程"
        # 打印当前线程的名称和i的值
        print(f"{threading.current_thread().name}--{i}")
        time.sleep(1)
        # 创建一个名为“子线程”的新线程t1
        t1 = threading.Thread(target=display2, name="子线程")
        # 启动t1线程
        t1.start()
        t1.join()  # t1优先执行,会把多线程变为单线程,影响整体性能。
def display2():
    for i in range(1, 6):
    # 打印当前线程的名称和i的值
        print(f"{threading.current_thread().name}--{i}")
        time.sleep(1)
 # 调用display函数
display1()

并发:
任务数多余CPU核心数,通过操作系统的任务调度算法,实现多个任务“一起”执行。(切换任务速度非常快)
并行: 任务数小于等于CPU核心数,让任务一起执行。

3、线程同步(就是在线程触发的时候给上一把锁)

线程同步:

import threading
from threading import *
threadLock = threading.Lock()		# 创建一把锁
class MyThread (Thread):
    def run(self):
        print ("开启线程: ", threading.current_thread().name)
        # 获取锁,用于线程同步
        threadLock.acquire()
        for i in range(5):
            print(threading.current_thread().name)
        # 释放锁,开启下一个线程
        threadLock.release()
# 创建新线程,开启
t1 = MyThread()
t2 = MyThread()
t1.start()
t2.start()

4、对于异常的常用处理

异常:

在这里插入图片描述
代码示例

try:
    10 * (1 / 0)
except ZeroDivisionError as error:
    print(error)
else:
    print('没有异常时,执行的代码。')
finally:
    print('这句话,无论异常是否发生都会执行。')

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值