Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
多处理中的Biopython Entrez请求失败_Python_Multiprocessing_Bioinformatics_Biopython - Fatal编程技术网

多处理中的Biopython Entrez请求失败

多处理中的Biopython Entrez请求失败,python,multiprocessing,bioinformatics,biopython,Python,Multiprocessing,Bioinformatics,Biopython,我正在使用biopython,尤其是Entrez请求搜索和摘要结果。我想通过多处理来实现并行化,以提高效率,但由于某种原因,Entrez禁止我这样做 我尝试了Python的多处理包和pathos.multiprocessing模块。这两种方法都不起作用,但会给我不同的错误消息。这是我使用pathos.multiprocessing的代码。我在get_entrez\u esearch\u response()中使用了try,以观察它是否由于查询而无法读取。结果是,在返回一些uid之后,get\u

我正在使用
biopython
,尤其是
Entrez
请求搜索和摘要结果。我想通过多处理来实现并行化,以提高效率,但由于某种原因,
Entrez
禁止我这样做

我尝试了Python的
多处理
包和
pathos.multiprocessing
模块。这两种方法都不起作用,但会给我不同的错误消息。这是我使用pathos.multiprocessing的代码。我在
get_entrez\u esearch\u response()
中使用了
try
,以观察它是否由于查询而无法读取。结果是,在返回一些
uid
之后,
get\u entrez\u esearch\u response()
将出现异常,并在while循环中继续打印相同的查询集。我知道NCBI服务器限制了我们每秒的请求查询,但为什么它不从下一秒开始请求呢

来自Bio import Entrez
从pathos.multiprocessing导入处理池
def get_entrez_esearch_响应(查询):
尽管如此:
尝试:
handle=Entrez.esearch(db=“gds”,term=query)
uid=Entrez.read(句柄)[“IdList”][0]
handle.close()
返回uid
例外情况除外,如e:
打印(e)
打印(查询)
def get_entrez_esearch_response_parallel(查询):
将处理池(2)作为p:
uid\u list=p.map(获取搜索响应、查询)
打印(uid\U列表)

如果您只运行一个进程,Biopython将遵守NCBI限制-您可以通过设置
Entrez.api_key
将速度从每秒3个请求提高到10个,我同意。那么,你的意思是他们故意限制用户使用多个进程吗?不管是哪种方式,我想我现在会回到单进程。谢谢@方舟里好吧,Biopython为您限制了它,否则NCBI只会因为您误用了他们的服务而拒绝您访问。
#uid1
#uid2
#uid3
#uid4
(GSE99020) AND "gse"[Entry Type]
HTTP Error 429: Too Many Requests
(GSE92593) AND "gse"[Entry Type]
HTTP Error 429: Too Many Requests
(GSE25220) AND "gse"[Entry Type]
HTTP Error 429: Too Many Requests
(GSE92593) AND "gse"[Entry Type]
HTTP Error 429: Too Many Requests