1
amoia50 2020 年 6 月 18 日 via iPhone
python 不香吗[狗头]
|
2
iintothewind 2020 年 6 月 18 日
xargs, parallel 都可以并行处理 可以试试
|
3
rrfeng 2020 年 6 月 18 日 via Android
每行只有一个数字?没别的?
运算具体是啥? 你这相当于没说,咋分析 |
4
delectate 2020 年 6 月 18 日
7 小时大约 25200s,处理 20w 行,一秒 10 行,不够快。
要么 py+多进程,要么像楼上说的并行处理,或者干脆把文件拆分,然后多个一起跑也行。 |
5
FrankHB 2020 年 6 月 18 日
为什么非要制造瓶颈?这种简单任务你用 C 临时糊个都不用几分钟,省下几个小时不香吗……
|
6
lululau 2020 年 6 月 18 日 via iPhone
单行命令的文本处理,python 真不香,sed awk perl ruby 不知道香到哪里去了,你也配叫脚本语言
|
7
CEBBCAT 2020 年 6 月 18 日 via Android
上次可能是计算 int64 的移位,awk 确实没有 Python 快,我跑起来一会儿 awk 了发现还没跑好,然后再开了一个终端去写 Python,等我写完跑出结果了 awk 还是没有算完。
楼上这么说有什么依据吗? |
8
momocraft 2020 年 6 月 18 日
"经过一个幂运算" 是 awk 自己的计算吗?
|
9
layorlayor 2020 年 6 月 18 日
把代码贴出来吧。感觉不应该这么慢
|
10
lululau 2020 年 6 月 18 日
@CEBBCAT 举两个最简单也最常见的例子:
文本替换: sed 's///' gawk 'gsub()' perl -pe 's///' ruby -pe 'gsub!()' 取一列并做变换: gawk '{print $1*2}' perl -alne 'print $F[0]*2' ruby -ane 'puts $F[0].to_i * 2' 欢迎楼下用 python 弄一个更简单的写法来打脸 还忘了说最近看到的一个行列结构文本处理的瑞士军刀 miller |
11
ylrshui 2020 年 6 月 18 日 via iPhone
估计 excel 都比这快
|
12
thedog 2020 年 6 月 18 日
awk 不应该那么慢吧,很多时候,这种简单任务,awk 比 python 快的。
|
13
runze 2020 年 6 月 18 日
代码贴出来看看? awk 虽然不算快,但绝不至于慢到这种程度
|
14
TimePPT PRO 这么规整的结构,还要做计算。pandas 很香的
|
15
ygtq 2020 年 6 月 18 日
show me the code :)
|
16
xlcoder166 2020 年 6 月 18 日
现有代码不变的思路 - 分治
1. 拆原文件至 90W / n ( CPU 核心数)个文件 2. shell 并行处理 拆分的文件 |
17
youngster 2020 年 6 月 18 日
估计不是 awk 慢,是你运算太慢,换个换个运算快的语言应该都能解决
|
18
layorlayor 2020 年 6 月 18 日
awk -F'|' '{print $2*1024*1024"|"$0}' 这个很快呀
|
19
layorlayor 2020 年 6 月 18 日 awk -F'|' '{print $2*1024*1024"|"$0} input.txt > output.txt
|
20
Vegetable 2020 年 6 月 18 日
你这脚本写的是个啥,处理单行文本还有 for 循环?看着就害怕
|
21
Vegetable 2020 年 6 月 18 日
btw,1024*1024 就是 2**20
|
22
klesh 2020 年 6 月 18 日
测试命令:
seq 0 10000 | awk '{print "foo|"$1"|bar"}' > test.txt time awk -F'|' '{print $2*1024*1024"|"$0}' test.txt 结果: 10484711424|foo|9999|bar 10485760000|foo|10000|bar ________________________________________________________ Executed in 76.44 millis fish external usr time 54.70 millis 0.00 micros 54.70 millis sys time 21.51 millis 962.00 micros 20.54 millis 硬件 CPU: Intel(R) Core(TM) i7-6700HQ CPU @ 2.60GHz SSD: SanDisk SD8SB8U5 |
23
Kelan 2020 年 6 月 18 日
这么小的文本跑 7 个小时有点离谱了把。
|
24
0x11901 2020 年 6 月 18 日
说实话每次遇到这种问题总有一群人说用 python 不香么……
真是应了那句老话:当你手上有一把锤子的时候,看所有的东西都是钉子 |
25
freelancher 2020 年 6 月 18 日
结果是个啥。得说呀。还是说附言二就解决了?
|
26
Semidio 2020 年 6 月 18 日
@freelancher #24 注意看 18L 和附言 2 的区别
|