#!/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中的多线程相关推荐

  1. 关于 python3 中的多线程的问题及理解

    什么是 join() ? join() 有什么用? 答:join() 有一个参数是timeout 设置超时,这里的超时都是针对主线程的,当子线程设置为 join(1) 后,则主线程会等待这个线程 1 ...

  2. Python中的多线程

    Python中的多线程 文章目录 Python中的多线程 一.线程介绍 1.什么是线程 2.为什么要使用多线程 3.多线程的优点 二.线程实现 1.**`普通创建方式`** 2.**`自定义线程`** ...

  3. python中的多线程、多进程

    简介 使用Python可以快速地编写程序,但是python对多线程的支持却不好,在Python2中,更多地使用多进程.在Python3中,引入了concurrent,便于多线程/进程开发. Pytho ...

  4. python多线程实现方式_python中实现多线程有几种方式?

    我们都知道,代码编程不是固定的东西,而是非常灵活的内容,根据不同的内容,我们可以拓展出很多条内容,最终目的还是为了可以实现结果,给大家举例说明其中一个最常用的多线程吧~以及实现的几种方式. 1. 用函 ...

  5. python怎么横着输出_对python3中, print横向输出的方法详解

    对python3中, print横向输出的方法详解 Python 2 : print打印的时候,如果结尾有逗号,打出来时候不会换行.但是在python3里面就不行了. Python3: 3.0的pri ...

  6. #Python3中tornado高并发框架

    Python3中tornado高并发框架 简介: Tornado是一种 Web 服务器软件的开源版本.Tornado 和现在的主流 Web 服务器框架(包括大多数 Python 的框架)有着明显的区别 ...

  7. python3爬虫之多线程爬取英雄联盟所有皮肤图片

    python3爬虫之多线程爬取英雄联盟所有皮肤图片 线程不要太高,容易出错,大约用时1分钟左右. import requests import json import os import thread ...

  8. Python3教程:多线程的使用教程

    一.简介 Python中使用线程有两种方式:函数或者用类来包装线程对象. 函数式:调用 _thread 模块中的start_new_thread()函数来产生新线程.语法如下: 参数说明: funct ...

  9. 对python3中pathlib库的Path类的使用详解

    原文连接   https://www.jb51.net/article/148789.htm 1.调用库 ? 1 from pathlib import 2.创建Path对象 ? 1 2 3 4 5 ...

最新文章

  1. Docker构建YApi镜像, Docker安装YApi, Docker部署YApi
  2. servlet action is not available
  3. android span的用法,Android Span的使用
  4. Y_CLIENT_QHD_504 role in GM6 ZSAP_CRM_BCR_SALESREP_DAIDE
  5. php监听mq消息,客户端监听服务端获取rabbitmq消息队列,rabbitmq有消息的时候客户端刷新页面才能获取到消息,监听没起到作用,请求各位大神指点迷津...
  6. 浅析BMP位图文件结构(含Demo)[转]
  7. 服务器asp.net权限设置问题及解决方法时间:
  8. 电脑重启后不必输入用户名密码,直接自己登入的方法
  9. VUE 学习代码 监视和 模板语法回调函数
  10. 制定交叉编译工具_制作交叉编译工具链的方法总结(详细)
  11. centos 7安装搭建confluence-wiki
  12. fortran和python的效率_Fortran数值计算真的比C快吗,经测试是一样快的,是不是很多人都在以讹传讹?...
  13. 完整BBS系统开发流程及结果展示
  14. 量子计算机预测未来,这台量子计算机能预测16种不同的未来!
  15. 动手学深度学习(使用Pytorch)网址收藏
  16. 使用websocket实现协同编辑
  17. 分块矩阵求逆 matlab,矩阵的分块求逆及解线性方程组.doc
  18. 艾默生首席执行官范大为退休;液化空气将新建生产装置为京东方供应气体 | 美通企业日报...
  19. 17.分段函数、绝对值函数以及幂指函数求导
  20. Android反编译工具合集

热门文章

  1. sorl实现商品快速搜索
  2. 轻松破解NewzCrawler时间限制
  3. 《Cacti实战》——第2章 环境的安装和配置
  4. 为什么要使用无密码保护的私钥?
  5. 基于 WebSocket 实现 WebGL 3D 拓扑图实时数据通讯同步(一)
  6. J2EE面试题集锦(附答案)
  7. 安全专家:恶意软件盯上苹果Mac机用户
  8. Spring testcontext
  9. Redis 过滤请求绝技 — 布隆过滤器与布谷鸟过滤器
  10. 某大厂程序员吐槽:在北京当码农,不敢结婚不敢生娃,真是注孤生!