我在一个线程对象中有一个函数,这个函数接受几个参数,我不知道当多个线程尝试使用这个函数时,这个线程会改变另一个线程的参数值吗?
我可以使用锁定但是在分配了参数之后。 如果参数存储在堆栈中,我猜它们将存在于每个线程堆栈中,但如果它们存在于堆中,如何避免线程更改另一个线程函数参数?
答案 0 :(得分:3)
函数参数放在堆栈上,每个线程都有自己的堆栈。你不必担心他们的线程安全。
但是,所有Python对象都存储在堆上;堆栈仅包含对这些对象的引用。如果多个线程正在访问一个这样的可变对象,如果访问未以某种方式同步,则它们仍然可以相互干扰。这与调用函数的方式无关。