Python中的競爭條件(Race Condition)是指當兩個或多個執行緒或流程同時嘗試存取和修改同一個共享資源時發生的情況,程式的行為取決於它們的執行時機。
原因: 缺乏適當的同步機制。
影響: 導致不可預測或不正確的結果,因為執行緒「競爭」以首先完成其操作。
範例:
<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中文網其他相關文章!