小编Jue*_*gen的帖子

pyproject.toml 和 cython 扩展模块

我有一个现有的 python 项目,主要用于setup.py构建该项目。该项目在 setup.py 中配置了 2 个 Cython 扩展模块。

最初我是pip install -e .为了开发,但从那时起我python setup.py build_ext --inplace在需要时重建扩展。与安装软件包相比,这要快得多。

我开始迁移项目以将pyproject.toml项目配置包含在[project]以下部分中pyproject.toml

我的setup.py基本上只包含 Cython 扩展模块,据我所知,目前还无法迁移到“pyproject.toml”。

现在我的问题:python setup.py build_ext --inplace不再工作,因为setup.py没有所有信息,并且没有咨询pyproject.toml读取项目配置(因此项目配置信息丢失)。

我是否需要恢复到原来的 setup.py/*.cfg 配置,或者是否有某种方法可以告诉setup.py从中检索配置pyproject.toml

cython setup.py pyproject.toml

15
推荐指数
2
解决办法
3974
查看次数

dask:并行模型中的共享内存

我已经阅读了 dask 文档、博客等,但我仍然不是 100% 清楚如何做到这一点。我的用例:

  • 我有大约 10GB 的参考数据。一旦加载,它们就是只读的。通常我们将它们加载到 Dask/Pandas 数据框中
  • 我需要这些参考数据来处理(丰富、修改、转换)每天大约 500 个 mio 事件(多个文件)
  • “流程”是大约 40 个任务的管道。执行顺序是相关的(依赖性)。
  • 每个单独的任务并不复杂或耗时,主要是查找、丰富、映射等。
  • 事件之间不存在依赖性。理论上,我可以通过单独的线程处理每个事件,将输出合并到一个文件中,然后就完成了。输出事件甚至不需要与输入事件具有相同的顺序。

总之:

  • 我们可以大规模并行化事件处理
  • 每个并行线程都需要相同的 10 GB(原始)引用数据
  • 处理单个事件意味着将 40 个任务的序列/管道应用于它们
  • 每个单独的任务并不耗时(读取参考数据并修改事件)

可能的陷阱/问题:

  • 花费更多的时间在序列化/反序列化上,而不是处理数据(我们在一些使用类似管道的方法的试验中确实经历过这种情况)
  • 引用数据被多次加载,每个(并行)进程加载一次
  • 我最好想在我的笔记本电脑上开发/测试它,但我没有足够的内存来加载参考数据。可能是解决方案是否会利用内存映射?

最有效的解决方案似乎是,如果我们只能将引用数据加载到内存中一次,则使其可供处理事件的多个其他进程只读

通过在每台计算机中加载参考数据来扩展到多台计算机。将文件名推送到计算机以执行。

知道如何实现这一目标吗?

非常感谢你的帮助

python pandas joblib dask

5
推荐指数
1
解决办法
2767
查看次数

Julia 中操作系统特定的路径分隔符

我找不到 Julia 是否提供操作系统特定的字符来分隔类似 PATH 的字符串,例如 PATH=c:\windows\systems32;c:\windows;... 以及 Linux 中的类似环境变量。操作系统特定,因为 Windows 使用“;” 和Linux“:”。我都找不到一个辅助函数来完成分割,只是不暴露分隔符。但也找不到那个。

自己定义这些很容易,我只是惊讶地没有找到它们。

非常感谢你的帮助

julia

4
推荐指数
1
解决办法
328
查看次数

Julia:如何准备和清理@testset

我想知道 Julia 准备和清理测试的最佳实践是什么?其他编程语言具有beforeafter,或类似的命名函数。朱莉娅似乎很想念他们。

testing julia

3
推荐指数
1
解决办法
98
查看次数

标签 统计

julia ×2

cython ×1

dask ×1

joblib ×1

pandas ×1

pyproject.toml ×1

python ×1

setup.py ×1

testing ×1