Python的threading模块

这篇具有很好参考价值的文章主要介绍了Python的threading模块。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Python的threading模块,Python编程快速上手,python,开发语言

 

为引入多线程的概念,下面是一个例子:

import time, datetime

startTime = datetime.datetime(2024, 1, 1, 0, 0, 0)
while datetime.datetime.now() < startTime:
    time.sleep(1)

print('Program now starting on NewYear2024')

在等待time.sleep()的循环调用完成时,程序不能做任何事情,它只是在那里做着,直到2029年万圣节。 这是因为Python程序在默认情况下,只有一个执行线程。

执行线程

在下载文件时,在设置了一次只能下载一个文件的程序中,同一时间段的下载任务中只能执行下载一个文件,这就是单线程。示例图如下:

Python的threading模块,Python编程快速上手,python,开发语言

 在设置同时可下载2个及以上文件的程序中,同一时间段的下载任务可以同时执行下载多个文件,这就是多线程。示例图如下:

Python的threading模块,Python编程快速上手,python,开发语言

 threading模块

在上面的代码中,为了不必等待直到time.sleep()函数完成,在Python中可以使用threading模块,在单独的线程中执行延迟或安排的代码。程序可以在原来的线程中同时做其他工作。
以下是一个简单的示例代码:

import threading, time

print('Starting of program.')

def takeANap():
    time.sleep(10)
    print('Wake up!')

threadObj = threading.Thread(target=takeANap)
threadObj.start()

print('End of program.')

代码运行结果是:

Python的threading模块,Python编程快速上手,python,开发语言

 过了10秒,运行结果是:
Python的threading模块,Python编程快速上手,python,开发语言

因为 def takeANap() 定义一个希望用于新线程中的函数,此时代码中有两个线程,第一个是print('Starting of program.'),这个线程中还有print('End of program.'),先执行并结束。

而 takeANap()函数的所在的线程是在threadObj.start()调用时才创建,始于takeANap()函数的开始处,在takeANap()返回后才结束。

在程序的所有线程结束之前,Python程序不会终止。第二个线程在第一个线程结束后仍然执行time.sleep(10)调用。

向线程的目标函数传递参数

如果想在新线程中运行的目标函数有参数,可以将目标函数的参数传入threading.Thread()。例如,假设在一个线程中运行以下print()调用:

print('Cats', 'Dogs', 'Frogs', sep=' & ')

Python的threading模块,Python编程快速上手,python,开发语言

 该print()调用有3个常规参数:‘Cats'、'Dogs'和'Frogs',以及一个关键字参数sep=' & '。

常规参数可作为一个列表传递给threading.Thread()中的args关键字参数。关键字参数可以作为一个字典,传递给threading.Thread()中的kwargs关键字参数,代码如下:

import threading
threadObj = threading.Thread(target=print, args=['Cats', 'Dogs', 'Frogs'], 
kwargs={'sep': ' & '})
threadObj.start()

Python的threading模块,Python编程快速上手,python,开发语言

 注意:调用threading.Thread()时,关键字参数是target=print,而不是target=print(),是调用print函数本身,而不是调用print(),并传入它的返回值,否则print()的返回将是无。


 文章来源地址https://www.toymoban.com/news/detail-623905.html

到了这里,关于Python的threading模块的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 🔥🔥Java开发者的Python快速进修指南:自定义模块及常用模块

    好的,按照我们平常的惯例,我先来讲一下今天这节课的内容,以及Java和Python在某些方面的相似之处。Python使用import语句来导入包,而Java也是如此。然而,两者之间的区别在于Python没有类路径的概念,它直接使用.py文件的文件名作为导入路径,并将其余的工作交给Python解释

    2024年02月05日
    浏览(76)
  • Python的threading模块

      为引入多线程的概念,下面是一个例子: 在等待time.sleep()的循环调用完成时,程序不能做任何事情,它只是在那里做着,直到2029年万圣节。 这是因为Python程序在默认情况下,只有一个执行线程。 在下载文件时,在设置了一次只能下载一个文件的程序中,同一时间段的下载

    2024年02月14日
    浏览(37)
  • Python多线程之_thread与threading模块

    Python多线程之_thread与threading模块 在Python程序中,多线程的应用程序会创建一个函数,来执行需要重复执行多次的程序代码,然后创建一个线程执行该函数。一个线程是一个应用程序单元,用于在后台并行执行多个耗时的动作。 在多线程的应用程序中,每一个线程的执行时间

    2024年02月04日
    浏览(38)
  • 🔥🔥Java开发者的Python快速进修指南:网络编程及并发编程

    今天我们将对网络编程和多线程技术进行讲解,这两者的原理大家都已经了解了,因此我们主要关注的是它们的写法区别。虽然这些区别并不是非常明显,但我们之所以将网络编程和多线程一起讲解,是因为在学习Java的socket知识时,我们通常会将它们结合使用,以实现服务器

    2024年02月05日
    浏览(69)
  • 37.Python从入门到精通—Python3 多线程 线程模块 使用 threading 模块创建线程

    在Python 3中,线程模块已被重命名为_thread,同时还引入了更高级别的 threading 模块,它允许创建线程对象并提供了更多的方法来控制线程的行为。 以下是一个简单的示例,演示如何使用 threading 模块创建并启动线程: 在这个例子中,我们创建了一个名为 print_numbers 的函数,它

    2024年04月26日
    浏览(45)
  • 零基础快速上手HarmonyOS ArkTS开发1---运行Hello World、ArkTS开发语言介绍

    在华为开发者大会2023年8月4日(HDC.Together)大会上,HarmonyOS 4正式发布,其实在2021年那会学习了一点鸿蒙的开发: 不过因为现在的鸿蒙手机完全兼容Android应用,所以学习动力也不是很足,一直就搁置了,直到今年华为官方出了这么一则消息才让我对于学习它有一种紧迫感了,如

    2024年02月05日
    浏览(51)
  • Python中threading模块 lock、Rlock的使用

    在使用多线程的应用下,如何保证线程安全,以及线程之间的同步,或者访问共享变量等问题是十分棘手的问题,也是使用多线程下面临的问题,如果处理不好,会带来较严重的后果,使用python多线程中提供Lock 、Rlock 、Semaphore 、Event 、Condition 用来保证线程之间的同步,后者

    2024年02月13日
    浏览(40)
  • 5 python快速上手

    常见的数据类型: int,整数类型(整形) bool,布尔类型 str,字符串类型 list,列表类型 tuple,元组类型 dict,字典类型 set,集合类型 float,浮点类型(浮点型) 每种数据类型都有自己的特点及应用场景,以后的开发中需要根据实际的开发情况选择合适的数据类型。 每种数

    2024年01月21日
    浏览(45)
  • 入门Python编程:了解计算机语言、Python介绍和开发环境搭建

    计算机语言是用来控制计算机行为的一种语言,通过它可以告诉计算机该做什么。计算机语言和人类语言在本质上没有太大区别,只是交流的对象不同。 计算机语言发展经历了三个阶段: 1. 机器语言 机器语言使用二进制编码来编写程序。 执行效率高,但编写起来麻烦。 2

    2024年02月09日
    浏览(69)
  • Python进阶篇(一)-- Django快速上手

            Web框架,就是用于开发Web服务器端应用的基础设施,说得通俗一点就是一系列封装好的模块和工具。事实上,即便没有Web框架,我们仍然可以通过socket或CGI来开发Web服务器端应用,但是这样做的成本和代价在商业项目中通常是不能接受的。通过Web框架,我们可以化

    2024年02月01日
    浏览(64)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包