Python线程和信号量

时间:2013-03-18 19:45:42

标签: python python-multithreading

我有一个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所做的信号量变化,反之亦然?

1 个答案:

答案 0 :(得分:7)

这是信号量的目的,它们允许您安全地同步并发进程。

请记住,Python中的线程不会真正让你获得并发性,除非你发布GIL(做IO,调用库等)。如果这是您的目标,您可能需要考虑multiprocessing库。