我的代码的目标是对由称为biopython的生物信息软件提供的xml文件进行一些计算。该程序生成一个如下所示的迭代器:
<Bio.Blast.Record.Blast object at 0x00000174AF383E80>
对于迭代器的每个元素,我都会进行一些计算并将结果上传到mysql数据库。当我打电话时,元素看起来像这样:
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)
我的代码如下:
processes = [mp.Process(target=calculation,args=(blast_record)) for blast_record in blast_records]
我尝试使用类似于以下的列表理解功能,将其与joblib和多处理工具并行化:
joblib
但是使用 multiprocessing
,我得到了一个错误:PicklingError:无法腌制任务以将其发送给工人
使用 {{1}} ,代码将无限期运行
任何有关如何构造代码以使函数的每个输入并行化的帮助吗?