gpt4 book ai didi

python - 量化站点的多线程和多处理问题

转载 作者:太空狗 更新时间:2023-10-30 01:28:45 26 4
gpt4 key购买 nike

我开始勾勒出一个用 Python(我希望是 3.x)编写的定量金融信息服务站点的结构,并得出结论——如果我错了请纠正我——我我将不得不同时使用 eventlet 网络库 多处理库。

系统的一部分基本上是一个在后台运行的 cron 作业,在收市后检查股票市场和其他财务数据,进行机器学习和定量计算,然后将预测放入一个简单的数据库甚至一个平面数据库中逗号分隔的文件。 (参数因此通过文件在系统的各个部分之间传递。)

我知道 eventlet 可以用于非阻塞 I/O,这样 beautiful soup 或 scrapy 就可以同时(某种程度上)从很多网站上抓取信息,而多处理库可以使机器学习/量化算法能够作为单独的进程并行计算所有股票数据。

要查看预测,用户将登录到使用 Flask 构建的系统的其他部分,该部分将访问数据库并显示预测。

我假设所有这些库和混合线程/多处理例程都能相互相处?我将使用 pythonanywhere.com 作为主机,它们似乎有相当多的“内置电池”。当然,当测试完成后,我可能不得不升级“worker”的数量来为最终部署的站点提供动力。

在如此复杂的事情中混合线程和多处理有什么陷阱吗?

最佳答案

只是一些无法放入评论部分的一般想法:

  1. scrapy 已经有一些方法可以处理 concurrent通过扭曲的网络请求。这意味着您可能不需要使用 eventlet?当然,这取决于你究竟是如何进行抓取的/你究竟需要抓取什么。根据我很久以前的尝试(也许我完全错了),如果你说需要 selenium 来抓取 javascript 响应,那么很难与 scrapy 同时执行此操作。但是,如果您只是使用 urllib 或其他方式获取请求(例如:API),那么我认为 scrapy 就足够了。

  2. 我同意您的意见 - 网络抓取部分总是很容易失败,因此您肯定希望将抓取部分与预测部分分开。您需要考虑到失败的抓取(例如:如果网站关闭怎么办,或者如果您收到错误数据怎么办),并在将清理后的数据塞入您自己的数据库之前清理所有数据,然后(单独)运行该数据上的机器学习内容。

但这里有一件重要的事情是,您肯定需要在抓取和机器学习之间建立一个数据库(不能像您建议的那样只在内存中或通过 csv 传递它们)。无数个原因,一对是:

  • 节省您的数据(不需要每次都下载多天的数据,只需最近一天)
  • 为您提供备份和历史数据,以防您的网络抓取不再可用(例如:假设您正在抓取过去 365 天的信息——如果您的信息源只提供最近 365 天的信息,但您突然想要 700 天,该怎么办?你想把你以前抓取的数据保存在某个地方)
  • 变得更快/更好/更少 - 拥有正确索引的数据库可能与机器学习算法的任何类型的并行处理一样重要,甚至更重要。

顺便说一句,django 也可以工作 really well抓取...

关于python - 量化站点的多线程和多处理问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28508761/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com