我正在创建一个“实时”进程,该进程从 SierraChart 更新的专有格式的 OHLCVTBA 文件中获取数据。读取数据并使用生成器创建数据框的代码发布在 pastebin 上。 [删除死链接]。
我意识到我的结构(新数据驱动)是错误的,我正准备重新组织它。 PhE's question and Wes's response使我朝着填充预填充数据框的方向发展,该数据框运行良好。我的问题是:
将我的数据帧和指针作为全局变量保存,还是将它们传入和传出使用它们的各种函数更快?此外,是否还有其他考虑因素应该插入这一选择?
谢谢。
最佳答案
Local variables are faster to access than global variables in python .
在 pandas 的上下文中,这意味着您应该将变量传递给有意义的函数(这意味着可以在函数内部更快地找到它们)。相反,python 中的函数调用很昂贵(如果你称它们很多),这就是为什么 numpy/pandas 尽可能使用矢量化函数。 显然,如果您在函数内部执行操作,则必须小心确保所有计算都在原地完成。
在担心速度之前,我通常会先以“pythonic”/“pandastic”方式让事情正常运行。然后使用 %timeit
看看它是否已经足够快(通常是这样)。添加单元测试。调整速度、%timeit
、%prun 和 %timeit
一些。如果是大项目vbench .
关于Python Pandas 全局 vs 传递变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16929105/