私は、XML文書を解析し、その場で反応する(つまり、部分木を解析する)必要があるソケットを経由しています。私が望むのは、そうしない非ブロッキングの方法です。そうすれば、より多くのデータが(スレッディングなしで)来るのを待っている間に他のことを行うことができます。読み取りバッファが空だったとき、それは、例えば反復を終了した場合iterparseは理想的であるようにPythonでXMLを解析(ストリーミング)するためのノンブロッキングメソッド
何か:
context = iterparse(imaginary_socket_file_wrapper)
while 1:
for event, elem in context:
process_elem(elem)
# iteration of context finishes when socket has no more data
do_other_stuff()
time.sleep(0.1)
私はSAXも選択肢だろうと思いますが、iterparseはちょうど私のニーズのためのシンプルなようです。何か案は?
更新:
のスレッドを使用しては結構ですが、私は擦り替えるために期待していた複雑さのレベルを紹介します。ノンブロッキングコールは良い方法だと思っていましたが、XMLを解析する複雑さが増していることがわかりました。
私は十分にこの答えをupvoteすることはできません – donopj2
ピーターありがとう。私は最終的にあなたの答えのおかげで別の答えを見つけました。私のより精巧な答えを見てください:https://stackoverflow.com/a/44414167/938111 – olibre