Python多线程通信问题实例解析
在Python中,多线程通信是一个关键的问题。主要的通信方式有:
锁(Lock):通过acquire和release方法实现对资源的互斥访问。
import threading
lock = threading.Lock()
def thread_function():
# 获取锁
lock.acquire()
try:
# 执行任务
print("Task in thread")
finally:
# 释放锁
lock.release()
信号量(Semaphore):用于控制同时访问资源的线程数量。
import threading
semaphore = threading.Semaphore(value=1)
def thread_function():
# 获取信号量,如果值为0,则阻塞
semaphore.acquire()
try:
# 执行任务
print("Task in thread")
finally:
# 释放信号量,允许其他线程获取
semaphore.release()
条件变量(Condition Variable):用于实现线程间的通信和同步。
import threading
condition = threading.Condition()
def thread_function1():
with condition:
print("Task 1 in thread")
# 等待其他线程通知可以继续
condition.wait()
print("Continuing...")
def thread_function2():
with condition:
print("Task 2 in thread")
# 先通知其他线程可以继续了
condition.notify_all()
print("Notifying all...")
threads = [
threading.Thread(target=thread_function1)),
threading.Thread(target=thread_function2)
]
for t in threads:
t.start()
for t in threads:
t.join()
以上就是Python多线程通信的一些常见问题和实例解析。
还没有评论,来说两句吧...