Osu!难度计算器
pyttanko的Python项目详细描述
奥苏!pp和难度计算器。纯python实现 https://github.com/Francesco149/oppai-ng
这是一个独立的单文件模块 只使用Python2.6+内置函数尽可能地可移植,而不使用 额外依赖项
如果需要命令行界面,请签出 oppai-ng
用法
pyttanko是一个单独的文件模块,因此使用它的最简单方法 只需将其放在项目的文件夹中:
cd my/project
curl https://raw.githubusercontent.com/Francesco149/pyttanko/master/pyttanko.py > pyttanko.py
这样,克隆项目的任何人都不必安装 Pyttanko,因为它将被捆绑
如果您愿意,也可以在pip上找到它
pip install pyttanko
也可以手动安装,如下所示:
curl -L https://github.com/Francesco149/pyttanko/archive/HEAD.tar.gz -o HEAD.tar.gz
cd pyttanko-*
python setup.py install --user
退房
pydoc pyttanko
或
python -c "help('pyttanko')"
对于完整的文档
最小示例:
#!/usr/bin/env pythonimportsysimportpyttankoasosup=osu.parser()bmap=p.map(sys.stdin)stars=osu.diff_calc().calc(bmap)print("%g stars"%stars.total)pp,_,_,_,_=osu.ppv2(stars.aim,stars.speed,bmap=bmap)print("%g pp"%pp)
您可以使用它运行:
cat /path/to/file.osu | ./example.py
性能
pyttanko运行测试套件的速度比原始测试套件慢10倍以上 C实现并使用大约8倍的内存,因此如果需要 要批量处理数千个分数,您应该考虑编写 C版本的本机绑定。
测试在Linux 4.9.38、Python2.7.10和i7-4790k上执行
考虑到python是 解释
$ cd ~/src/pyttanko/ $ time -v ./run_test ... Command being timed: "./run_test" User time(seconds): 101.68 System time(seconds): 0.61 Percent of CPU this job got: 99% Elapsed (wall clock)time(h:mm:ss or m:ss): 1m 42.34s Average shared text size (kbytes): 0 Average unshared data size (kbytes): 0 Average stack size (kbytes): 0 Average total size (kbytes): 0 Maximum resident set size (kbytes): 88688 Average resident set size (kbytes): 0 Major (requiring I/O) page faults: 0 Minor (reclaiming a frame) page faults: 631637 Voluntary context switches: 1 Involuntary context switches: 4116 Swaps: 0 File system inputs: 0 File system outputs: 56 Socket messages sent: 0 Socket messages received: 0 Signals delivered: 0 Page size (bytes): 4096 Exit status: 0 $ cd ~/src/oppai-ng/test $ ./build $ time -v ./oppai_test ... Command being timed: "./oppai_test" User time(seconds): 9.09 System time(seconds): 0.06 Percent of CPU this job got: 99% Elapsed (wall clock)time(h:mm:ss or m:ss): 0m 9.15s Average shared text size (kbytes): 0 Average unshared data size (kbytes): 0 Average stack size (kbytes): 0 Average total size (kbytes): 0 Maximum resident set size (kbytes): 11840 Average resident set size (kbytes): 0 Major (requiring I/O) page faults: 0 Minor (reclaiming a frame) page faults: 304 Voluntary context switches: 1 Involuntary context switches: 39 Swaps: 0 File system inputs: 0 File system outputs: 0 Socket messages sent: 0 Socket messages received: 0 Signals delivered: 0 Page size (bytes): 4096 Exit status: 0