📅  最后修改于: 2023-12-03 15:39:23.918000             🧑  作者: Mango
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() 方法等待线程结束,以确保线程执行完毕后再退出程序。