繁体   English   中英

Function 并行化 Python

[英]Function parallelization Python

我的代码的目的是对一个名为 biopython 的生物信息学软件给出的 xml 文件进行一些计算。 该程序生成一个如下所示的迭代器:

blast_records
<generator object parse at 0x00000174AFB21390>

对于迭代器的每个元素,我进行一些计算并将结果上传到 mysql 数据库。 当我调用元素时,如下所示:

<Bio.Blast.Record.Blast object at 0x00000174AF383E80>

我的代码如下:

from Bio.Blast import NCBIXML
import pymysql
result_handle = open(*file*)
blast_records = NCBIXML.parse(result_handle)

*start sql connection

def calculation(blast_record):
      # do calculation
      # upload to sql

for blast record in blast_records:
    calculation(blast_record)

我尝试使用类似于此的列表理解将其与 joblib 和 multiprocessing 等工具并行化:

processes = [mp.Process(target=calculation, args=(blast_record)) for blast_record in blast_records]

但是使用joblib我得到了错误: PicklingError: Could not pickle the task to send it to the workers

并且通过multiprocessing ,代码无限期地运行

关于如何构建我的代码以并行化 function 的每个输入的任何帮助?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM