python的线程相关知识

1、线程

在python里面除了多进程可以实现多任务之外,还可以使用多线程完成
那这两者有什么区别呢?
在这里插入图片描述
两个字:节约

1.1多线程作用

在这里插入图片描述

2、多线程完成多任务

2.1、线程的创建步骤

在这里插入图片描述
在这里插入图片描述
实例:
在这里插入图片描述

import time

def sing():
         for i in range(3):
                  print('singing....')
                  time.sleep(1)


def dance():
         for i in range(3):
                  print('dancing....')
                  time.sleep(1)


if __name__ == '__main__':
         sing()
         dance()

当我们使用多线程的时候,就可以缩短完成

import time
import threading

def sing():
         for i in range(3):
                  print('singing....')
                  time.sleep(1)


def dance():
         for i in range(3):
                  print('dancing....')
                  time.sleep(1)


if __name__ == '__main__':
         #sing()
         #dance()
         sing_thread = threading.Thread(target = sing)
         dance_thread = threading.Thread(target = dance)

         sing_thread.start()
         dance_thread.start()


3、线程执行有参数的任务

这个和进程的类似,注意传入参数的顺序和内容
在这里插入图片描述

4、子线程和主线程的结束顺序

主线程会等待所有的子线程结束后主线程再结束

为了能使得主线程不等待子线程结束,可以设置守护主线程
在这里插入图片描述
在这里插入图片描述

5、线程之间的执行顺序

线程的执行是由CPU的调度实现的,我们并不知道谁先谁后
所以我们说是无序的

6、进程和线程的对比

6.1关系的对比

在这里插入图片描述

6.2区别对比

在这里插入图片描述

6.3优缺点对比

在这里插入图片描述

7、多线程的案例实现

多线程的copy器需求分析

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

copy函数的内部实现

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
全部代码实现:

import os
import threading

def copy_file(file_name, source_dir, dest_dir):
    source_path = source_dir  + '\\' + file_name
    dest_path = dest_dir + '\\' + file_name
    with open(source_path, 'rb') as source_file:
        with open(dest_path, 'wb') as dest_file:
            while True:
                data = source_file.read(1024)
                if data:
                    dest_file.write(data)
                else:
                    break
                

def main():
    source_dir = 'D:\\AAAAAAAAAAAAA\\eye'
    dest_dir = 'D:\\AAAAAAAAAAAAA\\eyepursuit'
    
    try:
        os.mkdir(dest_dir)
    except:
        print('目标文件夹存在')
        
    file_list = os.listdir(source_dir)
    for file_name in file_list:
        copy_file(file_name, source_dir, dest_dir)
        # 使用多进程实现多任务拷贝
        sub_threading = threading.Thread(target=file_name, args=(file_name, source_dir, dest_dir))
        sub_threading.start()
    
    
    
main()
print('已经为您拷贝成功!')
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

行秋即离

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值