Я позволю другим людям решать, хотя.

исал программу на Python для биологического процессаhttps://codereview.stackexchange.com/questions/186396/solve-the-phase-state-between-two-haplotype-blocks-using-markov-transition-proba .

Если вы посмотрите на эту программу, то увидите, что она занимает много времени при вычислении данных из двух последовательных строк (или ключей, значений) за раз. Я не помещаю здесь весь код, но для простоты я создаю фиктивный файл и фиктивную программу (приведенную ниже), которая ведет себя аналогично на простейшем уровне. В этой фиктивной программе я рассчитываю, скажем,len(vals) столбец и запись его обратно в выходной файл.

Поскольку при выполнении вычислений выполняется привязка к процессору / графическому процессоруfor (k1, v1) and (k2, v2) .... в исходной программе (ссылка выше),Я хочу, чтобы мультипроцесс / поток данных анализа - 1) считывание целых данных в памяти самым быстрым способом2) разделить данные на куски по уникальнымchr поле3) сделать расчет4) запишите это обратно в файл.Итак, как бы я это сделал?

В данном фиктивном файле вычисления слишком просты, чтобы быть привязанными к GPU / CPU, но я просто хочу знать, как я могу это сделать, если это будет необходимо.

Примечание: У меня было слишком много людей, спрашивающих, чего я пытаюсь достичь - я пытаюсь многопроцессорно обработать / решить эту проблему Если я поставлю здесь свою оригинальную большую программу, никто не будет смотреть на нее. Итак, давайте потренируемся в этом маленьком файле и маленькой программе на Python.

Ниже мой код и данные:

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 lines.startswith('chr'):
            continue
        else:
            lines = lines.split('\t')
        manipulate_lines(lines)


if __name__ == '__main__':
    main()

Ответы на вопрос(2)

Ваш ответ на вопрос