Сообщение об ошибке при использовании многопроцессорной 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
вы увидите, что есть проблема с параллелизмом и итерацией его возвращаемых типов