[英]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.