6

私はPythonクラスを持っています。それをAClassと呼び、もう1つはThreadを拡張するMyThreadと呼びましょう。そして、その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が行うセマフォへの変更を認識し、その逆も同様ですか?

4

1 に答える 1

7

これがセマフォの目的です。セマフォを使用すると、並行プロセスを安全に同期できます。

Python のスレッドは、GIL を解放する (IO を実行する、ライブラリを呼び出すなど) 場合を除き、実際には並行性を得られないことに注意してください。multiprocessingそれが目的の場合は、ライブラリを検討することをお勧めします。

于 2013-03-18T19:54:09.690 に答える