【发布时间】:2018-04-13 00:59:13
【问题描述】:
我正在寻找一个带有分段筛子的 Eratosthenes 筛子的 python 实现,并使用 CPU 的 L1 缓存。
我在 github 上有自己的版本:https://github.com/nick599/PythonMathsAlgorithms/blob/master/segmented_soe_v6.py,它不使用 CPU 的 L1 缓存大小。
我找到了以下站点 - http://primesieve.org/segmented_sieve.html,它提供了使用 L1 缓存大小的 C++ 实现。它说它比我的算法快得多(我的算法需要几分钟才能创建高达 10^7 的素数,并且由于内存使用而挂在 10^8 上)。
我正在 Linux Mint v17 上开发,python 版本:2.74。 更新我的 CPU 是 Intel i7。
我对 python 还很陌生。
我想知道:
- 如何开始实现这个 C++ 算法的 python 版本?
- 我需要考虑什么?
- C++ 实现中是否存在无法在 Python 2.74 中编码的内容?
- 多线程呢?
- 那么超线程呢?
- python 的 GIL 呢?
寻找能够回答我上述所有问题的精神的答案。欢迎提供提示和技巧。
【问题讨论】:
标签: python c++ python-2.7 sieve-of-eratosthenes