【发布时间】:2021-06-13 00:24:21
【问题描述】:
类似的问题,但对于这个用例有点不同。我有一个在多个数据帧上运行的函数,我希望在每个数据帧运行时使用一个计时器,如果需要超过 30 秒的时间来跳过它并打印数据帧名称。
功能-
def some_function():
# runs on pd.DataFrames
cols = [some code]
rows = [some code]
df = pd.DataFrame(rows, columns=cols)
return df
df_1 = some_function()
df_2 = some_function()
df_3 = some_function()
其中df_1 和df_2 各花费不到30 秒,但df_3 花费3 分钟。然后它将运行df_1 和df_2,但打印出df_3 花费了超过30 秒。如何创建这样的定时循环?
编辑
在字典中组织数据帧的循环-
def some_function():
# runs on pd.DataFrames
cols = [some code]
rows = [some code]
t1 = datetime.now()
if (datetime.now()-t1).seconds <=30:
df = pd.DataFrame(rows, columns=cols)
return df
d = {}
dfs = range(0,10)
for name in dfs:
d[name] = some_function()
我认为这可能会更容易,如果循环并花费太长时间然后跳过?
【问题讨论】:
-
好吧,如果总时间超过 30 秒,您的新编辑将完全停止处理数据帧。这不是你最初要求的。例如,它不会中断需要很长时间的单个调用。在漫长的通话返回后,它只会放弃。如果没问题,那就去吧。
-
我很欣赏这个评论,但我是这个结构的新手,并试图获得一些帮助。我的意图是一样的,我只是不知道该怎么做。处理每个数据帧并查看是否需要不到 30 秒,如果是,则处理,如果不是,则打印名称
-
那么你必须把时间检查放在 some_function 里面。如果处理时间过长,您必须提前退出该功能
-
some_function里面有多少代码?你能发多少?我知道代码很敏感,但您提供的细节越多,我们的建议就越好。 -
@Tim Roberts 我在第一个块中包含了一些代码片段,基本上是使用游标执行来获取和组织行和列到数据帧中
标签: python function performance for-loop time