我有一个python类,我们称之为AClass,另一个是MyThread,它扩展了Thread。在那个AClass我创建MyThread类的2个对象,我也有一个信号量,我将它作为参数提供给MyThread类的构造函数。我的问题是,如果我修改一个MyThread对象中的信号量,另一个MyThread对象会看到差异吗?例如:
class AClasss:
def function:
semafor = threading.Semaphore(value=maxconnections)
thread1 = Mythread(semafor)
thread2 = Mythread(semafor)
thread1.start()
thread1.join()
thread2.start()
thread2.join()
class MyThread(Thread):
def __init__(self,semaphore):
self.semaphore = semaphore
def run():
semaphore.acquire()
"Do something here"
semaphore.release()
那么thread1是否看到了thread2所做的信号量变化,反之亦然?
答案 0 :(得分:7)
这是信号量的目的,它们允许您安全地同步并发进程。
请记住,Python中的线程不会真正让你获得并发性,除非你发布GIL(做IO,调用库等)。如果这是您的目标,您可能需要考虑multiprocessing
库。