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('已经为您拷贝成功!')