遺伝子に関する情報を取得するために、SPARQL を使用してこのエンドポイントを照会するための Python スクリプトを作成しました。スクリプトの動作は次のとおりです。
Get genes
Foreach gene:
Get proteins
Foreach proteins
Get the protein function
.....
Get Taxons
....
しかし、スクリプトの実行には時間がかかりすぎます。pyinstrumentを使用してプロファイリングを行ったところ、次の結果が得られました。
39.481 <module> extracting_genes.py:10
`- 39.282 _main extracting_genes.py:750
|- 21.629 create_prot_func_info_dico extracting_genes.py:613
| `- 21.609 get_prot_func_info extracting_genes.py:216
| `- 21.596 query build/bdist.linux-x86_64/egg/SPARQLWrapper/Wrapper.py:780
| `- 21.596 _query build/bdist.linux-x86_64/egg/SPARQLWrapper/Wrapper.py:750
| `- 21.588 urlopen urllib2.py:131
| `- 21.588 open urllib2.py:411
| `- 21.588 _open urllib2.py:439
| `- 21.588 _call_chain urllib2.py:399
| `- 21.588 http_open urllib2.py:1229
| `- 21.588 do_open urllib2.py:1154
| |- 11.207 request httplib.py:1040
| | `- 11.207 _send_request httplib.py:1067
| | `- 11.205 endheaders httplib.py:1025
| | `- 11.205 _send_output httplib.py:867
| | `- 11.205 send httplib.py:840
| | `- 11.205 connect httplib.py:818
| | `- 11.205 create_connection socket.py:541
| | `- 9.552 meth socket.py:227
| `- 10.379 getresponse httplib.py:1084
| `- 10.379 begin httplib.py:431
| `- 10.379 _read_status httplib.py:392
| `- 10.379 readline socket.py:410
|- 6.045 create_gene_info_dico extracting_genes.py:323
| `- 6.040 ...
|- 3.957 create_prots_info_dico extracting_genes.py:381
| `- 3.928 ...
|- 3.414 create_taxons_info_dico extracting_genes.py:668
| `- 3.414 ...
|- 3.005 create_prot_parti_info_dico extracting_genes.py:558
| `- 2.999 ...
`- 0.894 create_prot_loc_info_dico extracting_genes.py:504
`- 0.893 ...
基本的に、私は複数のクエリを複数回 (+60000) 実行しているので、実行が遅くなることが複数回行われていることがわかりましopening the connection
たgetting response
。
この問題に取り組む方法を知っている人はいますか?