`st.cache_data` `func.clear()` clear data associated with specific argument(s)

With func.clear() for st.cache_data, is there a way to clear data associated with specific argument(s) only.

Ex:

st.cache_data
def myFunc(n):
    return f'Called with {n}'

myFun(10)
myFun(20)
myFun(30)

With myFunc.clear() all data is lost.

But I just want to clear the data associated with myFunc(30) and keep the other data.
(Say, I know the Database in the backend got updated for just that argument)

While I can do whatever I want with session_state, it is per session and hence not that effecient.

Hi @KrishnaKasula

Perhaps you could assign an assigned function to a variable such as:

var30 = myFun(30)

and delete that variable via

del var30

Hi @dataprofessor,

Doesn’t look like working.
Here is the simple executable code

import streamlit as st

@st.cache_data
def myFunc(n):
    s = f'Called with {n}'
    print(s)
    return s

for i in (1, 2, 3, 1, 2, 3):
    s = myFunc(i)
    st.write(s)
    del s

I do not see any function getting called twice.

Output on terminal

Called with 1
Called with 2
Called with 3

Output on browser

Called with 1
Called with 2
Called with 3
Called with 1
Called with 2
Called with 3

Krishna

Anything I am missing, can someone please help?