【发布时间】:2019-10-15 12:02:58
【问题描述】:
我要完成以下任务:
我有一个“输入”tsv 文件:
0 2 0
2 5 1
5 10 2
10 14 5
我想把它转换成以下格式:
0
0
1
1
1
2
2
2
2
2
5
5
5
5
我设法用以下代码做到这一点: (开始是输入文件的第一列,停止是第二列,深度是第三列。)
def parse(i):
out = []
start = int(i[0])
stop = int(i[1])
depth = i[2]
times = stop - start
out += times * [depth]
return(out)
signal = []
for i in tqdm(file):
x = parse(i)
signal.append(x)
with open('output.txt', 'w') as f:
for item in signal[0]:
f.write("%s\n" % item)
虽然我的输入文件有 16720973 行,而且我有很多文件,所以我尝试使用以下代码创建并行进程以最小化执行时间:
def parse(start, stop, depth):
out = []
times = int(stop) - int(start)
out += times * [depth]
return(out)
signal = []
poolv = multip.Pool(20)
x = [poolv.apply(parse, args=(i[0], i[1], i[2])) for i in tqdm(file)]
signal.append(x)
poolv.close()
但是执行时间没有区别,我认为没有发生多进程。是否有任何错误或更好的方法来解决此问题以最小化执行时间?
【问题讨论】: