如何使用valgrind和Python代码来检测竞争条件?

时间:2017-04-02 08:12:48

标签: python valgrind

我有竞争条件的Python代码。

import threading
class Counter:
    def __init__(self):
        self.x = 0
    def incr(self):
        self.x += 1
    def __str__(self):
        return str(self.x)

x = Counter()

class T(threading.Thread):
  def run(self):
        for i in range(100000):
            x.incr()

t1 = T()
t2 = T()
t1.start()
t2.start()
t1.join()
t2.join()
print(x)

我试图用valgrind来检测它。

valgrind --tool=helgrind --suppressions=valgrind-python.supp \python -E -tt ./1.py
0 errors from 0 contexts (suppressed: 9 from 9)

我可以使用valgrind来检测Python代码中的竞争条件吗?

1 个答案:

答案 0 :(得分:0)

Python的标准实现使用全局解释器锁来确保一次只有一个线程可以执行Python字节码。

所以从valgrind的角度来看,只有一个线程在运行。