函数参数存储在python中的哪里?堆?还是堆?

时间:2016-01-29 15:21:00

标签: python multithreading memory stack heap

我在一个线程对象中有一个函数,这个函数接受几个参数,我不知道当多个线程尝试使用这个函数时,这个线程会改变另一个线程的参数值吗?

我可以使用锁定但是在分配了参数之后。 如果参数存储在堆栈中,我猜它们将存在于每个线程堆栈中,但如果它们存在于堆中,如何避免线程更改另一个线程函数参数?

1 个答案:

答案 0 :(得分:3)

函数参数放在堆栈上,每个线程都有自己的堆栈。你不必担心他们的线程安全。

但是,所有Python对象都存储在堆上;堆栈仅包含对这些对象的引用。如果多个线程正在访问一个这样的可变对象,如果访问未以某种方式同步,则它们仍然可以相互干扰。这与调用函数的方式无关。