threading.Thread有输入值的示例
时间: 2023-09-08 11:16:28 浏览: 45
以下是一个使用`threading.Thread`并带有输入值的示例:
```python
import threading
def print_message(message):
print(message)
# 创建一个线程,传递输入值为 "Hello, World!"
thread = threading.Thread(target=print_message, args=("Hello, World!",))
# 启动线程
thread.start()
# 等待线程结束
thread.join()
```
在这个例子中,我们定义了一个函数`print_message`,它接收一个参数`message`并将其打印到控制台上。我们使用`threading.Thread`创建了一个新的线程,并将`print_message`函数作为目标。我们还将输入值 `"Hello, World!"` 作为参数传递给`print_message`函数。
最后,我们启动线程并等待它完成执行。当线程运行时,它将打印 `"Hello, World!"` 到控制台上。
相关问题
threading.Thread的示例
下面是一个简单的使用`threading.Thread`模块创建线程的示例:
```python
import threading
import time
def print_numbers():
for i in range(1, 11):
print(i)
time.sleep(1)
def print_letters():
for letter in ['a', 'b', 'c', 'd', 'e']:
print(letter)
time.sleep(1)
# 创建两个线程
t1 = threading.Thread(target=print_numbers)
t2 = threading.Thread(target=print_letters)
# 启动线程
t1.start()
t2.start()
# 等待线程完成
t1.join()
t2.join()
print("Done!")
```
上面的示例中,我们定义了两个函数`print_numbers()`和`print_letters()`,分别用于打印数字和字母。然后,我们创建了两个线程`t1`和`t2`,每个线程分别执行一个函数。最后,我们等待两个线程完成,然后输出`Done!`。注意,`join()`方法可以让主线程等待其他线程完成后再继续执行。
关闭窗口时结束所有threading.Thread线程的示例
可以使用 Python 的 `atexit` 模块来注册一个函数,在程序退出时自动执行。在这个函数中,可以遍历当前所有的线程并逐个调用它们的 `join()` 方法来等待它们结束。
以下是一个示例代码:
```python
import threading
import atexit
# 定义一个线程类
class MyThread(threading.Thread):
def run(self):
print("线程开始:", self.name)
# 模拟线程执行
for i in range(5):
print(self.name, "执行中...")
print("线程结束:", self.name)
# 在程序退出时调用的函数
def exit_handler():
print("程序退出,等待所有线程结束...")
# 遍历所有线程,逐个调用 join() 方法等待它们结束
for thread in threading.enumerate():
if thread != threading.current_thread():
thread.join()
print("所有线程已结束!")
# 注册程序退出时的函数
atexit.register(exit_handler)
# 启动多个线程
for i in range(3):
t = MyThread()
t.start()
print("主线程结束!")
```
在这个示例中,我们定义了一个 `MyThread` 类来模拟线程的执行。程序启动后,会启动 3 个 `MyThread` 实例,并且在程序退出时会等待它们全部结束。在 `exit_handler` 函数中,我们使用了 `threading.enumerate()` 方法来获取当前所有的线程实例,并且逐个调用它们的 `join()` 方法来等待它们结束。注意要判断当前线程是否是主线程,避免等待自己。