Python线程和信号量

exi*_*onX 6 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()
Run Code Online (Sandbox Code Playgroud)

那么thread1是否看到了thread2所做的信号量变化,反之亦然?

Sea*_*ing 7

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

请记住,除非你发布GIL(执行IO,调用库等),否则Python中的线程不会真正获得并发性.如果这就是你想要的,你可能想要考虑这个multiprocessing库.