- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在从文件加载数据。我有很多文件,所以我有几个进程加载文件列表:
with concurrent.futures.ProcessPoolExecutor(max_workers=4) as executor:
for x, y, z in executor.map(load_my_file, path_list):
加载我的文件:加载数据,将“USERS”和“POSTS”存储在两个字典中并返回它们,将用户和帖子分别合并到一个字典中,然后批量提交它们。
每个用户可能有很多帖子,但在文件中每条记录只是一个帖子和一个用户的组合。所以这就是字典背后的原因,所以我在使用 sqlalchemy 插入时没有主键重复。
但是,这会占用大量内存。我有大约 160 万条记录、60 万用户,而且我的 python 程序占用了大量内存(超过了我的 16GB 内存允许的数量)。
我研究过使用 session.merge 但似乎每次调用它时都会查询数据库,使得该过程非常慢。还有其他办法解决这个问题吗?我希望能够在每个进程中进行提交,而不是最后将其全部合并到一个大字典中,但我不想破坏任何关系或出现主键错误。
最佳答案
很奇怪的是,并行加载 80 个本地文件比一次加载一个要快得多。不过我可能会提出一些理由。
但是,好吧。您可以将数据按原样导入到临时非规范化表中。之后,使用 SQL 查询将数据复制到目标规范化表。然后删除临时表(或者如果您定期需要则截断)。另外,看看您的 SQLAlchemy 查询:合并不仅会降低性能。实际上,通过 add_all 进行的“大量”插入不会变成单个插入。您可以将 insert
查询与字典列表一起使用: I’m inserting 400,000 rows with the ORM and it’s really slow! .
I looked into using session.merge but it seems to query the database every time I call it
情况更糟。它应该检查记录是否存在(第一个查询),然后插入或更新记录(第二个查询)。因此,使用它来处理大型数据数组看起来是有问题的。
关于python - 数据的多处理加载并提交给 sqlalchemy,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29962139/
因为我需要一个指向不同类中的 SDL_Window 的指针,所以我认为使用 shared_ptr 是个好主意。 //happens in class A::foo() //shared_Window_
我有一些通过 cron 定期运行的长期运行的 CLI PHP 脚本。我希望它们尽快完成,但又不会严重影响其他进程(例如 Web 服务器响应能力)。 目前我正在运行脚本 nice -n 19 并且还尝试
我想将 view.py 中的字符串数组移交给模板,并将该字符串用于 D3。 views.py: def index(request): template = loader.get_templa
我必须使用一个库函数,它为生成的字符串分配一点内存并返回一个 char*,期望调用者最终使用 free() 释放内存。 // Example declaration of the library fu
我想使用接受 UTF16-LE 字符串作为 (const char16_t* str, size_t length) 参数的库函数。 length 参数只需要为非空终止的字符串提供。该函数将复制字符串
我是一名优秀的程序员,十分优秀!