python3中的多线程
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Date : 2018-07-19 21:50:16
# @Author : cdl (1217096231@qq.com)
# @Link : https://github.com/cdlwhm1217096231/python3_spider
# @Version : $Id$
'''python3中的多线程模块:
_thread: 提供了低级别的、原始的线程以及一个简单的锁,它相比于 threading 模块的功能还是比较有限的
threading: 模块除了包含 _thread 模块中的所有方法外,还提供的其他方法:
threading.currentThread(): 返回当前的线程变量
threading.enumerate(): 返回一个包含正在运行的线程的list。正在运行指线程启动后、结束前,不包括启动前和终止后的线程
threading.activeCount(): 返回正在运行的线程数量
除了使用方法外,线程模块同样提供了Thread类来处理线程,Thread类提供了以下方法:
run(): 用以表示线程活动的方法
start():启动线程活动
join([time]): 等待至线程中止
isAlive(): 返回线程是否活动的
getName(): 返回线程名
setName(): 设置线程名
'''
import threading
import _thread
import time
from threading import Thread
"""Python中使用线程有两种方式:函数或者用类来包装线程对象"""
# 1. 使用函数创建多线程
# 语法形式: threading.Thread( function, args, [kwargs] )
# 参数说明: function: 线程函数 args: 传递给线程函数的参数,必须是个tuple类型。 kwargs: 可选参数
# 自定义线程函数
def print_time(name='python'):
for i in range(2):
print('hello %s' % name)
time.sleep(1)
# 创建线程01,不指定参数
thread_01 = Thread(target=print_time)
# 启动线程01
thread_01.start()
# 创建线程02,指定参数
thread_02 = Thread(target=print_time,args=('C++',))
# 启动线程02
thread_02.start()
# 2. 使用类创建多线程
# 首先类要继承自threading.Thread父类,然后在类中有一个run()方法;
class MyThread(Thread):
def __init__(self, name='PHP'):
super().__init__() # 注意: super().__init__() 一定要写,而且要写在最前面,否则会报错。
self.name=name
def run(self): # 类似于方法1中的自定义线程函数,方法的覆写
for i in range(2):
print('hello %s' % self.name)
time.sleep(1)
if __name__ == '__main__':
thread_03 = MyThread() # 创建线程03,不指定参数
thread_04 = MyThread('Java',) # 创建线程024,指定参数
thread_03.start()
thread_04.start()
# 总结:
"""
threading.Thread()类的属性和方法总结:
t=Thread(target=func)
# 启动子线程
t.start()
# 阻塞子线程,待子线程结束后,再往下执行
t.join()
# 判断线程是否在执行状态,在执行返回True,否则返回False
t.is_alive()
t.isAlive()
# 设置线程是否随主线程退出而退出,默认为False
t.daemon = True
t.daemon = False
# 设置线程名
t.name = "My-Thread"
"""
python3中的多线程相关推荐
- 关于 python3 中的多线程的问题及理解
什么是 join() ? join() 有什么用? 答:join() 有一个参数是timeout 设置超时,这里的超时都是针对主线程的,当子线程设置为 join(1) 后,则主线程会等待这个线程 1 ...
- Python中的多线程
Python中的多线程 文章目录 Python中的多线程 一.线程介绍 1.什么是线程 2.为什么要使用多线程 3.多线程的优点 二.线程实现 1.**`普通创建方式`** 2.**`自定义线程`** ...
- python中的多线程、多进程
简介 使用Python可以快速地编写程序,但是python对多线程的支持却不好,在Python2中,更多地使用多进程.在Python3中,引入了concurrent,便于多线程/进程开发. Pytho ...
- python多线程实现方式_python中实现多线程有几种方式?
我们都知道,代码编程不是固定的东西,而是非常灵活的内容,根据不同的内容,我们可以拓展出很多条内容,最终目的还是为了可以实现结果,给大家举例说明其中一个最常用的多线程吧~以及实现的几种方式. 1. 用函 ...
- python怎么横着输出_对python3中, print横向输出的方法详解
对python3中, print横向输出的方法详解 Python 2 : print打印的时候,如果结尾有逗号,打出来时候不会换行.但是在python3里面就不行了. Python3: 3.0的pri ...
- #Python3中tornado高并发框架
Python3中tornado高并发框架 简介: Tornado是一种 Web 服务器软件的开源版本.Tornado 和现在的主流 Web 服务器框架(包括大多数 Python 的框架)有着明显的区别 ...
- python3爬虫之多线程爬取英雄联盟所有皮肤图片
python3爬虫之多线程爬取英雄联盟所有皮肤图片 线程不要太高,容易出错,大约用时1分钟左右. import requests import json import os import thread ...
- Python3教程:多线程的使用教程
一.简介 Python中使用线程有两种方式:函数或者用类来包装线程对象. 函数式:调用 _thread 模块中的start_new_thread()函数来产生新线程.语法如下: 参数说明: funct ...
- 对python3中pathlib库的Path类的使用详解
原文连接 https://www.jb51.net/article/148789.htm 1.调用库 ? 1 from pathlib import 2.创建Path对象 ? 1 2 3 4 5 ...
最新文章
- Docker构建YApi镜像, Docker安装YApi, Docker部署YApi
- servlet action is not available
- android span的用法,Android Span的使用
- Y_CLIENT_QHD_504 role in GM6 ZSAP_CRM_BCR_SALESREP_DAIDE
- php监听mq消息,客户端监听服务端获取rabbitmq消息队列,rabbitmq有消息的时候客户端刷新页面才能获取到消息,监听没起到作用,请求各位大神指点迷津...
- 浅析BMP位图文件结构(含Demo)[转]
- 服务器asp.net权限设置问题及解决方法时间:
- 电脑重启后不必输入用户名密码,直接自己登入的方法
- VUE 学习代码 监视和 模板语法回调函数
- 制定交叉编译工具_制作交叉编译工具链的方法总结(详细)
- centos 7安装搭建confluence-wiki
- fortran和python的效率_Fortran数值计算真的比C快吗,经测试是一样快的,是不是很多人都在以讹传讹?...
- 完整BBS系统开发流程及结果展示
- 量子计算机预测未来,这台量子计算机能预测16种不同的未来!
- 动手学深度学习(使用Pytorch)网址收藏
- 使用websocket实现协同编辑
- 分块矩阵求逆 matlab,矩阵的分块求逆及解线性方程组.doc
- 艾默生首席执行官范大为退休;液化空气将新建生产装置为京东方供应气体 | 美通企业日报...
- 17.分段函数、绝对值函数以及幂指函数求导
- Android反编译工具合集