Pythonの人種状態とは、2つ以上のスレッドまたはプロセスが同じ共有リソースに同時にアクセスして変更しようとする状況を指します。
キーポイント:
Impact:
は、スレッド「競争」が最初に操作を完了するため、予測不可能または誤った結果を引き起こしました。例:
<code class="language-python">counter = 0 def increment(): global counter for _ in range(1000): counter += 1 # 此处不是线程安全的 thread1 = threading.Thread(target=increment) thread2 = threading.Thread(target=increment) thread1.start() thread2.start() thread1.join() thread2.join() print(counter) # 输出可能会有所不同,并且小于 2000</code>
Lock
インタビュースキル:RLock
<code class="language-python">import threading counter = 0 lock = threading.Lock() def increment(): global counter for _ in range(1000): with lock: # 确保一次只有一个线程访问此代码块 counter += 1 thread1 = threading.Thread(target=increment) thread2 = threading.Thread(target=increment) thread1.start() thread2.start() thread1.join() thread2.join() print(counter) # 输出将始终为 2000</code>
以上がPython の競合状態。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。