Is the += operator thread-safe in Python?

后端 未结 8 1565
萌比男神i
萌比男神i 2020-11-27 13:45

I want to create a non-thread-safe chunk of code for experimentation, and those are the functions that 2 threads are going to call.

c = 0

def increment():
          


        
8条回答
  •  迷失自我
    2020-11-27 14:23

    It's easy to prove that your code is not thread safe. You can increase the likelyhood of seeing the race condition by using a sleep in the critical parts (this simply simulates a slow CPU). However if you run the code for long enough you should see the race condition eventually regardless.

    from time import sleep
    c = 0
    
    def increment():
      global c
      c_ = c
      sleep(0.1)
      c = c_ + 1
    
    def decrement():
      global c
      c_ = c
      sleep(0.1)
      c  = c_ - 1
    

提交回复
热议问题