python threading多线程详解

2024-03-03 20:38

本文主要是介绍python threading多线程详解,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

之前爬虫用到过多线程,好久不用了,来复习一下

使用的是pthon3自带的threading模块

使用threading.Thread类创建线程

import time
import threadingdef test_thread(para='test', sleep=1):"""线程运行函数"""time.sleep(sleep)print(para)def main():#通过实例化threading.Thread类创建线程thread_test = threading.Thread(target=test_thread, args=('test',))thread_test1 = threading.Thread(target=test_thread, args=('test1',4))# start()启动线程thread_test.start()  thread_test1.start()print('线程运行结束')if __name__ == '__main__':main()

join()方法的使用

创建一个线程时,看不出来效果

import threading, timedef test_thread(para='test'):"""线程运行函数"""print(para)def run(data_list):thread_list = []for i in data_list:thread_list.append(threading.Thread(target=test_thread(i)))for i in thread_list:i.start()print('start waiting: ' + time.strftime('%H:%M:%S') + "\n")for i in thread_list:i.join()print('join waiting: ' + time.strftime('%H:%M:%S') + "\n")print('线程结束')if __name__ == '__main__':run([1,2,3,4,5,6])

创建两个线程时

import threading, timedef test_thread(para='test', sleep=3):"""线程运行函数"""print('start:'+ para + '   ' + time.strftime('%H:%M:%S') + "\n" )time.sleep(sleep)def run():test_list = []test1 = threading.Thread(target = test_thread('test1', 3))test1.start()test_list.append(test1)test2 = threading.Thread(target = test_thread('test2', 8))test2.start()test_list.append(test2)print('start join: ' + time.strftime('%H:%M:%S') + "\n")for item in test_list:item.join()print('end join: ' + time.strftime('%H:%M:%S') + "\n")if __name__ == '__main__':run()
# 分析  两个线程同时执行join(), 当test1执行完后,test2才开始执行, join()退出
# thread.join()的作用是
# 阻塞主进程,专注于执行多线程中的程序,多线程多join的情况下,依次执行各线程的join方法,前头一个结束了才能执行后面一个。

 

这篇关于python threading多线程详解的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/770844

相关文章

Python Transformers库(NLP处理库)案例代码讲解

《PythonTransformers库(NLP处理库)案例代码讲解》本文介绍transformers库的全面讲解,包含基础知识、高级用法、案例代码及学习路径,内容经过组织,适合不同阶段的学习者,对... 目录一、基础知识1. Transformers 库简介2. 安装与环境配置3. 快速上手示例二、核心模

一文详解Java异常处理你都了解哪些知识

《一文详解Java异常处理你都了解哪些知识》:本文主要介绍Java异常处理的相关资料,包括异常的分类、捕获和处理异常的语法、常见的异常类型以及自定义异常的实现,文中通过代码介绍的非常详细,需要的朋... 目录前言一、什么是异常二、异常的分类2.1 受检异常2.2 非受检异常三、异常处理的语法3.1 try-

Java中的@SneakyThrows注解用法详解

《Java中的@SneakyThrows注解用法详解》:本文主要介绍Java中的@SneakyThrows注解用法的相关资料,Lombok的@SneakyThrows注解简化了Java方法中的异常... 目录前言一、@SneakyThrows 简介1.1 什么是 Lombok?二、@SneakyThrows

Java中字符串转时间与时间转字符串的操作详解

《Java中字符串转时间与时间转字符串的操作详解》Java的java.time包提供了强大的日期和时间处理功能,通过DateTimeFormatter可以轻松地在日期时间对象和字符串之间进行转换,下面... 目录一、字符串转时间(一)使用预定义格式(二)自定义格式二、时间转字符串(一)使用预定义格式(二)自

Redis Pipeline(管道) 详解

《RedisPipeline(管道)详解》Pipeline管道是Redis提供的一种批量执行命令的机制,通过将多个命令一次性发送到服务器并统一接收响应,减少网络往返次数(RTT),显著提升执行效率... 目录Redis Pipeline 详解1. Pipeline 的核心概念2. 工作原理与性能提升3. 核

Python正则表达式语法及re模块中的常用函数详解

《Python正则表达式语法及re模块中的常用函数详解》这篇文章主要给大家介绍了关于Python正则表达式语法及re模块中常用函数的相关资料,正则表达式是一种强大的字符串处理工具,可以用于匹配、切分、... 目录概念、作用和步骤语法re模块中的常用函数总结 概念、作用和步骤概念: 本身也是一个字符串,其中

Python使用getopt处理命令行参数示例解析(最佳实践)

《Python使用getopt处理命令行参数示例解析(最佳实践)》getopt模块是Python标准库中一个简单但强大的命令行参数处理工具,它特别适合那些需要快速实现基本命令行参数解析的场景,或者需要... 目录为什么需要处理命令行参数?getopt模块基础实际应用示例与其他参数处理方式的比较常见问http

python实现svg图片转换为png和gif

《python实现svg图片转换为png和gif》这篇文章主要为大家详细介绍了python如何实现将svg图片格式转换为png和gif,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录python实现svg图片转换为png和gifpython实现图片格式之间的相互转换延展:基于Py

Python中的getopt模块用法小结

《Python中的getopt模块用法小结》getopt.getopt()函数是Python中用于解析命令行参数的标准库函数,该函数可以从命令行中提取选项和参数,并对它们进行处理,本文详细介绍了Pyt... 目录getopt模块介绍getopt.getopt函数的介绍getopt模块的常用用法getopt模

Python利用ElementTree实现快速解析XML文件

《Python利用ElementTree实现快速解析XML文件》ElementTree是Python标准库的一部分,而且是Python标准库中用于解析和操作XML数据的模块,下面小编就来和大家详细讲讲... 目录一、XML文件解析到底有多重要二、ElementTree快速入门1. 加载XML的两种方式2.