python 中的函数参数存储在哪里?堆?还是堆?
Where are functions parameters stored in python? Stack? or Heap?
我在线程对象中有一个函数,这个函数接受几个参数,我不知道当很多线程尝试使用这个函数时这个线程是否会改变另一个线程的参数值?
我可以使用锁,但是在分配参数之后。
如果参数存储在堆栈中,我猜它们将存在于每个线程堆栈中,但如果它们存在于堆中,如何避免线程更改另一个线程函数参数?
函数参数入栈,每个线程都有自己的栈。您不必担心它们的线程安全。
但是,所有Python个对象都存储在堆上;堆栈仅包含对此类对象的引用。如果多个线程正在访问一个这样的可变对象,如果访问没有以某种方式同步,它们仍然会相互干扰。然而,这与函数的调用方式无关。
我在线程对象中有一个函数,这个函数接受几个参数,我不知道当很多线程尝试使用这个函数时这个线程是否会改变另一个线程的参数值?
我可以使用锁,但是在分配参数之后。 如果参数存储在堆栈中,我猜它们将存在于每个线程堆栈中,但如果它们存在于堆中,如何避免线程更改另一个线程函数参数?
函数参数入栈,每个线程都有自己的栈。您不必担心它们的线程安全。
但是,所有Python个对象都存储在堆上;堆栈仅包含对此类对象的引用。如果多个线程正在访问一个这样的可变对象,如果访问没有以某种方式同步,它们仍然会相互干扰。然而,这与函数的调用方式无关。