Сообщение об ошибке при использовании многопроцессорной Python

Мне нужно преобразовать очень большой файл.bam в файл.bed, хотя я нашел решение, используя параллель bam2bed bedops, который поддерживает параллель SEG и gnuParallel, два кластера, к которым я могу получить доступ, поддерживают только планировщики расхода и крутящего момента, а я нет. Я знаю очень много о tcsh, я даже не могу изменить сценарий, чтобы удовлетворить требования грязи и крутящего момента.

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

"Python неожиданно завершил работу при использовании плагина calignmentfile.so"

# The code here is just a test code, ignore its real meaning.
import multiprocessing as mp
import pysam

def work(read):
    return read.query
    # return read.split()[0]

if __name__ == '__main__':
    cpu = mp.cpu_count()
    pool = mp.Pool(cpu)

    sam = pysam.AlignmentFile('foo.bam', 'rb')
    read = sam.fetch(until_eof=True)

    # f = open('foo.text', 'rb')
    # results = pool.map(work, f, cpu)

    results = pool.map(work, read, cpu)
    print(results)

Означает ли это сообщение чтение из pysam.AlignmentFile() не поддерживает параллелизм или Python не поддерживает этот тип параллели? Я использую обычный текстовый файл для проверки этого куска кода, он работает хорошо (например, код был прокомментирован).

1 ответ

pysam действительно есть некоторые проблемы с параллелизмом. Если вы видите исходный код дляfetch вы увидите, что есть проблема с параллелизмом и итерацией его возвращаемых типов

Другие вопросы по тегам