python多线程防止丢数据示例
时间: 2023-10-27 09:07:24 浏览: 81
以下是一个使用Python多线程防止丢数据的示例:
```python
import threading
class SafeCounter:
def __init__(self):
self.lock = threading.Lock()
self.counter = 0
def increment(self):
with self.lock:
self.counter += 1
def get_counter(self):
with self.lock:
return self.counter
counter = SafeCounter()
def worker():
for i in range(10000):
counter.increment()
threads = []
for i in range(10):
t = threading.Thread(target=worker)
threads.append(t)
t.start()
for t in threads:
t.join()
print(counter.get_counter())
```
在这个例子中,我们创建了一个SafeCounter类,它封装了一个计数器和一个线程锁。在increment方法中,我们使用with语句来获取线程锁并增加计数器的值。在get_counter方法中,我们也使用with语句来获取线程锁并返回计数器的值。
在主程序中,我们创建了10个线程来执行worker函数,该函数会对计数器执行10000次增加操作。我们等待所有线程完成后,调用SafeCounter的get_counter方法来获取最终计数器的值。
由于我们使用了线程锁来保护计数器的增加操作,因此我们可以确保不会丢失任何数据。
阅读全文