擅长:python、mysql、java
<p>我只使用过几次线程,下面没有测试过这段代码,但是快速浏览一下,for循环确实是唯一可以从线程中获益的地方。在</p>
<p>不过,我还是让别人来决定吧。在</p>
<pre><code>import threading
my_data = '''chr\tpos\tidx\tvals
2\t23\t4\tabcd
2\t25\t7\tatg
2\t29\t8\tct
2\t35\t1\txylfz
3\t37\t2\tmnost
3\t39\t3\tpqr
3\t41\t6\trtuv
3\t45\t5\tlfghef
3\t39\t3\tpqr
3\t41\t6\trtu
3\t45\t5\tlfggg
4\t25\t3\tpqrp
4\t32\t6\trtu
4\t38\t5\tlfgh
4\t51\t3\tpqr
4\t57\t6\trtus
'''
def manipulate_lines(vals):
vals_len = len(vals[3])
return write_to_file(vals[0:3], vals_len)
def write_to_file(a, b):
print(a,b)
to_file = open('write_multiprocessData.txt', 'a')
to_file.write('\t'.join(['\t'.join(a), str(b), '\n']))
to_file.close()
def main():
to_file = open('write_multiprocessData.txt', 'w')
to_file.write('\t'.join(['chr', 'pos', 'idx', 'vals', '\n']))
to_file.close()
data = my_data.rstrip('\n').split('\n')
for lines in data:
if not lines.startswith('chr'):
lines = lines.split('\t')
threading.Thread(target = manipulate_lines, args = (lines)).start()
if __name__ == '__main__':
main()
</code></pre>