我有一个包含497个pandas数据框的文件夹存储为.parquet文件。文件夹总维度为7.6GB。
我正在努力开发一个简单的交易系统。所以我创建了两个不同的类,主要的是Portfolio 1,然后这个类为数据文件夹中的每个数据帧创建一个Asset对象。
import os
import pandas as pd
from dask.delayed import delayed
class Asset(file):
def __init__:
self.data_path = 'path\\to\\data\\folder\\'
self.data = pd.read_parquet(self.data_path + file, engine='auto')
class Portfolio:
def __init__:
self.data_path = 'path\\to\\data\\folder\\'
self.files_list = [file for file in os.listdir(self.data_path) if file.endswith('.parquet')]
self.assets_list = []
self.results = None
self.shared_data = '???'
def assets_loading(self):
for file in self.files_list:
tmp = Asset(file)
self.assets_list.append(tmp)
def dask_delayed(self):
for asset in self.assets_list:
backtest = delayed(self.model)(asset)
def dask_compute(self):
self.results = delayed(dask_delayed)
self.results.compute()
def model(self, asset):
# do shet
if __name__ == '__main__':
portfolio = Portfolio()
portfolio.dask_compute()
我做错了,因为它看起来没有处理结果。如果我尝试检查portfolio.results控制台打印:
Out[5]: Delayed('NoneType-7512ffcc-3b10-445f-928a-f01c01bae29c')
以下是我的问题:
非常感谢 。
答案 0 :(得分:1)
第exports.login = async function(req, res) {
var email = req.body.email;
await pool.query('SELECT * FROM users WHERE users.email = ?', [email], function(
error,
results,
fields
) {
if (error) {
res.send({
code: 400,
failed: "Error ocurred"
});
} else {
if (results.length > 0) {
//Mail authorized
res.send({
code: 200,
success: "Sucessfull login"
});
} else {
//Mail unauthorized
res.send({
code: 403,
failed: "Unauthorized mail"
});
}
}
});
};
行有一些问题:
self.results = delayed(dask_delayed)
,您可能需要dask_delayed
self.dask_delayed
不会返回任何内容dask_delayed
(延迟函数不存在,只有延迟结果),但不存储输出 - 计算不会就地发生,就像你想象的那样。 你可能想要
.compute()
现在你需要修复self.result = delayed(self.dask_delayed)().compute()
,以便返回一些内容。它不应该调用更多延迟函数,因为它本身已经被延迟了。
最后,为了用dask_delayed()
填充内存,我不会惊讶于数据的内存版本更大,压缩/编码是镶木地板格式的目标之一。您可以尝试使用pd.read_parquet
,这是懒惰/按需。