从零开始Python | Python中的线程:了解如何在Python中使用线程

网友投稿 549 2022-05-30

如今,Python已成为全球最受欢迎的编程语言之一。自1990年代成立以来,它已经吸引了众多的追随者以及每天致力于使这种编程语言变得更好的发烧友和编码人员。在Python生态系统中内置的许多功能中,最引人注目的是线程。因此,在本文中,我们将讨论有关Python中的线程的所有知识,以及如何利用它以及它的优缺点。

本文将介绍以下指针,

什么是Python中的线程?

在Python中启动线程

什么是守护进程线程?

使用多线程

让我们开始吧

用Python进行线程化

什么是Python中的线程?

Python中的线程可以简单地定义为单独的执行流程。这仅意味着在您的程序中,将同时执行两个不同的进程。Python线程的一个有趣方面是,在第3版之后,Python中的多个线程不会同时执行,而只是看上去只是在执行。

同时运行两个不同的进程让人感到很惊奇,但需要了解的是,Python 3及更高版本的当前版本是以这样一种方式编码的,即只能在任何给定的时间点运行该进程。但是,如果需要在CPython中同时将两个或多个进程同时使用,则还需要用其他语言(例如C,C ++和Java)编写一些代码,然后在Python中通过多线程运行它们。

Python中最著名的线程优势之一是它具有提高设计清晰度的能力。

在此之前,我们对Python中的线程有一些了解,让我们了解如何启动线程,

在Python中启动线程

既然您已经习惯了使用Python定义线程,那么让我们来看一个有关如何使用Python创建自己的线程的示例。为了在Python中创建线程,您首先需要导入线程库,然后指示它启动(),如下例所示:

import logging import threading import time def thread_function(name): logging.info("Thread %s: starting", name) time.sleep(2) logging.info("Thread %s: finishing", name) if __name__ == "__main__": format = "%(asctime)s: %(message)s" logging.basicConfig(format=format, level=logging.INFO, datefmt="%H:%M:%S") logging.info("Main    : before creating thread") x = threading.Thread(target=thread_function, args=(1,)) logging.info("Main    : before running thread") x.start() logging.info("Main    : wait for the thread to finish") # x.join() logging.info("Main    : all done")

输出

在Python中运行线程时,会将其作为函数传递,该函数包含需要执行的参数列表。在上面共享的示例中,您正在指示Python运行线程thread_function()并将其作为参数传递给1。

当您运行上述程序时,输出将如下所示。

这篇关于“ Python中的线程”的文章的下一部分,让我们看看什么是守护程序线程,

什么是守护进程线程?

用技术术语,可以将守护程序定义为主要在后台运行的进程。但是,在Python中,守护程序线程具有非常特定的含义。在Python中,守护程序线程将在程序退出时立即关闭,尽管在其他编程语言中,它将继续在后台运行。如果在某个程序中没有将线程编程为守护程序线程,则解释器将等待它完成操作,然后仅关闭解释器。

为了更好地理解这个概念,请看一下上面的例子。在第二行中,程序在完成所有任务后等待几 秒钟。这是因为它正在等待非守护线程完成其操作,然后退出该接口。一旦线程完成其操作,则仅程序退出。

现在让我们修改上面的程序,看看如果在代码中插入一个守护线程,会发生什么。

从零开始学python | Python中的线程:了解如何在Python中使用线程

新代码:x = threading.Thread(target = thread_function,args = {1,),daemon = True)

当您运行上面的程序并进行了修改时,它将看起来像这样。

这两个输出之间的区别在于,最新的输出缺少最后一行。thread_function()没有机会完成,因为我们插入了一个守护程序线程,当它到达末尾时,它退出了程序。

加入线程

既然您已经了解了在Python中创建线程的概念以及守护线程的概念,那么让我们发现如何在Python中加入线程。

通过在Python中使用join()函数,您可以连接两个不同的线程,还可以指示一个线程等待另一个线程完成执行。当您对大型应用程序进行编码并且需要以特定顺序执行所有进程时,此功能通常会派上用场

本文有关“ Python线程”的最后一部分将向您展示有效的“多线程”,

使用多线程

在上面的示例中,我们谈到了如何一次使用两个线程。但是,如果在特定情况下需要同时使用多个线程,该怎么办?为了更好地了解情况,请看以下示例。

import logging import threading import time def thread_function(name): logging.info("Thread %s: starting", name) time.sleep(2) logging.info("Thread %s: finishing", name) if __name__ == "__main__": format = "%(asctime)s: %(message)s" logging.basicConfig(format=format, level=logging.INFO, datefmt="%H:%M:%S") threads = list() for index in range(3): logging.info("Main    : create and start thread %d.", index) x = threading.Thread(target=thread_function, args=(index,)) threads.append(x) x.start() for index, thread in enumerate(threads): logging.info("Main    : before joining thread %d.", index) thread.join() logging.info("Main    : thread %d done", index)

输出

在上面的程序中,我们遵循了导入线程库,启动线程,创建多个线程,然后使用join()函数将所有内容组合在一起并以特定顺序执行的相同过程。

当您运行上述程序时,结果将如下所示。

结论

它是Python最方便的功能之一。通过正确使用它,您可以使整个编码过程更加轻松和高效。从上面的文章中,我们希望您已经学习了线程的基础知识,并将在您的日常编程中继续使用它。

Python 任务调度

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:聊聊LiteOS中生成的Bin、HEX、ELF三种文件格式
下一篇:工商银行携手华为云,打造金融数据创新应用实践新标杆
相关文章