python threading模块的使用指南

 更新时间:2021年06月05日 15:32:22   作者:松鼠爱出饼干  
python的thread模块是底层的模块,python的threading模块是对thread做了一些包装的,可以更加方便的被使用。本文详细的讲述了threading模块的用法

1. threding模块创建线程对象

接上述案例,我们可以利用程序阻塞的时间让程序执行后面的任务,可以用多线程的方式去实现。对应的需要我们借助threading模块去实现:
如下所示

import time
import threading
def work():
"""只有函数对象才能佈田名线积"""
print('5.洗茶杯: 1min ' )
time.sleep(1)
print('6.放茶叶: 1min ' )
time.sleep(1)

start_time = time .time()
print( '1.洗壶: 1min ' )
time.s1eep(1)
print( '2.灌凉水:1min ' )
time.sleep(1)
print( '3.烧水: 1min ' )
time.sleep(1)
print( '4.等水烧开:3min ' )
work_thread = threading.Thread(target=work)

# 启动线程对象
work_thread.start()
time.sleep(1) # 5.洗茶杯: 1min
time.sleep(1) # 6.放茶叶: 1min
time.sleep(1)
print( '7.泡茶:1min ' )
time.sleep(1)
print('总共花了: ',time.time() - start_time)

以上案例是一个单线程,需要特别注意的是threading模块操作线程所操作的必须是函数对象。通过threding模块可以把一个普通的函数对象转化为线程对象。

2. threding模块创建多线程

当一个进程启动之后,会默认产生一个主线程,因为线程是程序执行流的最小单元,当设置多线程时,主线程会创建多个子线程,在python中,默认情况下,主线程执行完自己的任务以后,就退出了,此时子线程会继续执行自己的任务,直到自己的任务结束。

import time
import threading

def upload():
print("开始上传文件...")
time.sleep(2)
print("完成上传文件...")

def down1oad():
print("开始下载文件...")
time.s1eep(2)
print("完成下载文件...")

if __name__ == '__main__':
upload_thread = threading.Thread(target=up1oad)
up1oad_thread .start()
up1oad_thread.join()
down1oad_thread = threading.Thread(target=down1oad,daemon=True)
down1oad_thread.start()
print('主线程结束')

也就是说主线程在分配任务时会创建多个子线程,子线程的任务进度不会阻碍主线程的执行。但是主线程会等待子线程执行任务完之后才结束主线程。也就是说实际上主线程是先执行完任务的,如果你想在主线程执行完之后就结束整个线程的话,那么可以设置守护主线程。

3. 多线程的参数传递

多线程的参数传递用args接受位置参数,用kwargs接受关键字参数。如下所示:

import threading

def get(ur1,header=None):
    print(ur1)
    print(header)

for url in [ 'https : / /www.baidu.com', 'https:/ /www. soso.com ' ,' https: / /www . 360. com']:
    # threading.Thread
get_thread = threading. Thread(target=get,args=(ur1, ), kwargs={ ' header ':{ 'user-agent ' : ' pythonrequests'}})
    get_thread.start

4. 线程产生的资源竞争

首先我们来看一个案例:

import threading
import time
import random

def add1(n):
    for i in range(100) :
        time.sleep(random.randint(1,3))
        with open( 'he7lo.txt', mode='a', encoding='utf-8 ' ) as f:
            f.write(f'in} he1lo wor1d !'+ 'he7lo wor1d !'*1024)
            f.write(' \n ')

if __name__ == '___main__' :
    for n in range(10) :
        t1 = threading. Thread(target=add1,args=(n,))
        t1.start()

以上就是python threading模块的使用指南的详细内容,更多关于python threading模块的使用的资料请关注脚本之家其它相关文章!

相关文章

  • Python实现疫情通定时自动填写功能(附代码)

    Python实现疫情通定时自动填写功能(附代码)

    这篇文章主要介绍了Python实现疫情通定时自动填写功能,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-05-05
  • python中的queue队列类型及函数用法

    python中的queue队列类型及函数用法

    这篇文章主要介绍了python中的queue队列类型及函数用法,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-09-09
  • python3读取csv文件任意行列代码实例

    python3读取csv文件任意行列代码实例

    这篇文章主要介绍了python3读取csv文件任意行列代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-01-01
  • python中 conda 虚拟环境管理和jupyter内核管理

    python中 conda 虚拟环境管理和jupyter内核管理

    这篇文章主要介绍了python中 conda 虚拟环境管理和jupyter内核管理,文章基于pyhton以及conda的虚拟环境创建、删除、jupyter添加、删除虚拟kernel的方法,需要的朋友可以参考一下
    2022-04-04
  • 数据驱动测试DDT之Selenium读取Excel文件

    数据驱动测试DDT之Selenium读取Excel文件

    这篇文章主要为大家介绍了数据驱动测试DDT之Selenium读取Excel文件,
    2021-11-11
  • pygame学习笔记(1):矩形、圆型画图实例

    pygame学习笔记(1):矩形、圆型画图实例

    这篇文章主要介绍了pygame学习笔记(1):矩形、圆型画图实例,本文讲解了pygame窗口、窗口退出、pygame中的颜色、圆形、矩形及一个完整实例,需要的朋友可以参考下
    2015-04-04
  • Python中__init__.py文件的作用详解

    Python中__init__.py文件的作用详解

    __init__.py 文件的作用是将文件夹变为一个Python模块,Python 中的每个模块的包中,都有__init__.py 文件.这篇文章主要介绍了Python中__init__.py文件的作用详解,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2016-09-09
  • Python使用Tkinter GUI实现输入验证功能

    Python使用Tkinter GUI实现输入验证功能

    这篇文章主要介绍了Python中使用Tkinter GUI实现输入验证,文中通过一个完整示例代码给大家介绍Python Tkinter GUI输入验证功能,需要的朋友可以参考下
    2022-04-04
  • Django框架下在视图中使用模版的方法

    Django框架下在视图中使用模版的方法

    这篇文章主要介绍了Django框架下在视图中使用模版的方法,Django是Python丰富多彩的众框架中最有人气的一个,需要的朋友可以参考下
    2015-07-07
  • pandas 给dataframe添加列名的两种方法

    pandas 给dataframe添加列名的两种方法

    DataFrame的单元格可以存放数值、字符串等,本文主要介绍了pandas 给dataframe添加列名的两种方法,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-06-06

最新评论