用Python写一个多线程实现一边输入数据一边输出其他不相关数据的代码
时间: 2023-05-30 10:01:27 浏览: 47
以下是一个示例代码,使用了两个线程,一个用于输入数据,一个用于输出随机数:
```python
import threading
import random
import time
# 用于输入数据的线程
def input_thread():
while True:
data = input("请输入数据:")
print("输入的数据为:", data)
# 用于输出随机数的线程
def output_thread():
while True:
num = random.randint(1, 100)
print("随机数为:", num)
time.sleep(1)
# 创建并启动线程
input_t = threading.Thread(target=input_thread)
output_t = threading.Thread(target=output_thread)
input_t.start()
output_t.start()
```
运行该代码后,将会看到如下输出:
```
请输入数据:test
输入的数据为: test
随机数为: 71
随机数为: 23
请输入数据:hello
输入的数据为: hello
随机数为: 29
随机数为: 53
...
```
可以看到,当我们输入数据时,程序会立即输出我们输入的数据,同时每隔一秒钟还会输出一个随机数。这就是利用多线程实现了同时进行输入和输出的效果。
相关问题
用Python写一个多线程实现一边输入数据一边输出数据
以下是一个Python多线程程序,可以一边输入数据一边输出数据:
```python
import threading
def input_thread():
while True:
data = input("请输入数据:")
output_queue.put(data)
def output_thread():
while True:
data = output_queue.get()
print("输出数据:", data)
if __name__ == '__main__':
output_queue = queue.Queue()
input_t = threading.Thread(target=input_thread)
output_t = threading.Thread(target=output_thread)
input_t.start()
output_t.start()
```
这个程序使用了两个线程,一个线程用于输入数据,另一个线程用于输出数据。输入线程不停地从标准输入获取数据,并将数据放入一个队列中。输出线程不停地从队列中获取数据,并将数据打印到标准输出中。
注意,这里使用了Python内置的队列模块,用于线程之间的数据交换。这样做可以保证线程间的同步和互斥,避免竞争条件。
用python写一个多线程处列表数据,并保存的样例
下面是一个使用Python多线程处理列表数据并保存的示例代码:
```python
import threading
# 定义线程处理函数
def process_data(data):
# TODO: 处理数据
return data
# 定义线程类
class DataProcessorThread(threading.Thread):
def __init__(self, data_list):
threading.Thread.__init__(self)
self.data_list = data_list
def run(self):
# 遍历数据列表,使用线程处理函数处理数据
for data in self.data_list:
process_data(data)
# TODO: 将处理后的数据保存到文件或数据库
# 主线程
if __name__ == '__main__':
# 假设有1000条数据需要处理
data_list = [i for i in range(1000)]
# 将数据分成10份,每个线程处理100条数据
num_threads = 10
chunk_size = len(data_list) // num_threads
chunks = [data_list[i:i+chunk_size] for i in range(0, len(data_list), chunk_size)]
# 创建线程,并启动
threads = []
for chunk in chunks:
thread = DataProcessorThread(chunk)
threads.append(thread)
thread.start()
# 等待所有线程完成
for thread in threads:
thread.join()
print('All data processed and saved.')
```
在以上示例代码中,我们通过定义线程处理函数 `process_data()` 和线程类 `DataProcessorThread`,实现了对列表数据的多线程处理。在主线程中,我们将数据分成多份,并创建相应数量的线程去处理。每个线程使用 `process_data()` 函数处理数据,并将处理后的数据保存到文件或数据库中。最后,我们等待所有线程完成后,打印信息表示处理和保存数据的任务已经完成。