📜  带参数的 python 线程 - Python (1)

📅  最后修改于: 2023-12-03 15:39:23.918000             🧑  作者: Mango

带参数的 Python 线程

Python 中的线程(Thread)是一种轻量级的并发执行方式。线程拥有自己的代码流程,但是与其他线程并发执行。Python 的标准库 threading 中为我们提供了方便的线程编程接口,但是默认情况下它只能传入函数,不能传入参数。本文将介绍如何创建带参数的 Python 线程。

创建带参数的线程

Python 的线程模块只能将函数作为线程的入口点,我们需要通过将参数通过函数对象传递的方式来实现传参。示例代码如下所示:

import threading

def hello(name):
    print("Hello, {}!".format(name))

t = threading.Thread(target=hello, args=("Bob",))

t.start()

其中,target 指定线程入口函数,args 是传递给线程的参数列表。在上面的代码中,我们定义了一个名为 hello 的函数,它可以接受一个 name 参数并输出相应的问候语。创建了一个名为 t 的线程,将 hello 函数作为其入口点,并传递一个参数列表,列表中只有一个元素 "Bob",表示该线程要问候的对象。最后调用 t.start() 方法启动线程。

输出结果:

Hello, Bob!
创建多个带参数的线程

如果我们需要创建多个带参数的线程,可以使用循环来批量创建,示例代码如下所示:

import threading
import time

def count(name, n):
    for i in range(n):
        print("{}: {}".format(name, i))
        time.sleep(1)

threads = []
for i in range(3):
    t = threading.Thread(target=count, args=("Thread-{}".format(i), 5))
    threads.append(t)

for t in threads:
    t.start()

for t in threads:
    t.join()

在上述代码中,我们定义了一个名为 count 的函数,它可以接受两个参数 name 和 n,分别表示线程的名称和计数的次数。循环创建了 threeads 数量的线程,并将它们添加到一个 threads 列表中。接着启动这些线程,并等待它们全部执行结束。

注意,每个线程对象只能调用一次 start() 方法来启动线程,调用多次会抛出 RuntimeError 异常。

总结

本文介绍了如何在 Python 中创建带参数的线程。通过将参数列表作为函数对象的参数,可以实现在线程中传递参数,并完成相应的任务。线程的调用可以使用循环,以实现批量创建和启动线程。在线程调用结束后,我们需要通过 join() 方法等待线程结束,以确保线程执行完毕后再退出程序。