Cherrypyを使用しているときに、このコメント行が表示されました。 "単一の項目リストを反復処理することは、長い文字列のすべての文字を反復処理するよりもはるかに高速であるため、文字列はリストにラップされます。 これは にありますhttps://github.com/cherrypy/cherrypy/blob/master/cherrypy/lib/encoding.py#L223 私はいくつかの研究をオンラインで行っていますが、私はまだresponse.bodyを[response.body]として包む理由を十分に理解していません。 ?誰も私にこのデザインの詳細を教えてもらえますか?長い文字列を繰り返し処理するよりも速く単一の項目リストを反復処理しますか? #Python #Cherrypy
答えて
コードがそのコメントの前にあると認識した場合、self.body
は単一の文字列または多数の文字列を含む繰り返し可能なシーケンスのいずれかになります。他のコードでは、それを後者として使用します(反復処理し、項目を文字列で処理する)。
技術的には、後のコードループを単一の文字列の文字に渡すことはできますが、文字ごとにデータを処理することは効率が悪い可能性があります。したがって、コメントの下のコードは、一度にすべて処理されるように、単一の文字列の周りにリストをラップします。
コードでは、本体は 'basestring'(cherrypy 3)または 'text_or_bytes'(cherrypy 5)でなければなりません。したがって、 'a'、 'b'、 'c']または['abc']を 'a'と比較するのではなく、 'a'と 'a'を比較するだけです。 – JoeyZhao
'self.body self.body:の 'chunk 'のためにファイル' all do 'に'。つまり、本体をループし、文字列である 'チャンク 'を得ることを期待しています(通常、行はループの最初の行にあるテキストであることをテストします)。それぞれのチャンクで実行する操作は、1つのチャンクが多い場合よりも1つの大きなチャンクがあれば効率的です。パフォーマンスの差はそれほど大きくないかもしれないので、このコードの実装の詳細について学ぶために多大な労力をかけていることはわかりません。 – Blckknght
ありがとうございました。これはたぶん唯一の説明だと思います。 – JoeyZhao
- 1. 文字列内の単語を繰り返し処理する
- 2. アセンブリー(NASM)の文字列を繰り返し処理する
- 3. JSONを繰り返し処理[Pythonの]
- 4. リストを反復処理し、Scalaの見つからない項目を処理します
- 5. 仮想マシン上でのPythonのマルチプロセッシング/スレッド処理が単一の処理よりも長くかかる
- 6. Python - リストを繰り返し処理する
- 7. 反復処理リスト
- 8. 繰り返し処理
- 9. XSLT文字列パラメータの繰り返しと各パラメータの処理
- 10. JS:divを繰り返し処理する
- 11. 反応したネイティブでJSONを繰り返し処理する
- 12. Pythonのリストでペアを反復処理し、反復
- 13. 文字列の文字を反復処理する方法は?
- 14. json配列でURL文字列を繰り返し処理する方法
- 15. C#反復的にネストされたプロパティリストを繰り返し処理する
- 16. XMLを反復処理しますか?
- 17. データテーブルを繰り返し処理し、リストの列を削除します
- 18. 各繰り返し(TensorFlow)後に処理時間が長くなります。
- 19. 複数のリストを一度に繰り返し処理する方が良い
- 20. 最短の長さのすべての文字列を繰り返し処理するアルゴリズムですか?
- 21. 反復処理リストを作成する
- 22. 繰り返しクエリを処理するとMongoDBが高速になります
- 23. 反復処理がJSONリスト上のPython
- 24. CasperJSでURLリストを繰り返し処理する
- 25. PHPの配列関数は、メモリアドレスを使って配列の項目を繰り返し処理します。
- 26. 処理(反復処理)
- 27. isArray()がQScriptValueの項目を反復処理する方法は?
- 28. Pythonの不均一な列より関数をどのように反復処理しますか?
- 29. Java:SeleniumでWebElementリストを繰り返し処理できません
- 30. mysqlクエリ処理の繰り返し
デコードの意味ですか?私はまだプロセス(['sameblarblar'])がプロセス( 'sameblarblar')よりも速いのかどうかわかりません。その答えは、コメントが正しいと仮定すると、「プロセス」が入力を処理する方法にある必要があります。しかし具体的には、それは何ですか? – JoeyZhao
この質問をする別の方法は、文字列をリストに入れることによって、文字列Aを通過する労力を避けることができる場合です。 – JoeyZhao
あなたが与えた同じ例を使用するには、 'lotsofstuff'の中のものを実行する必要がある場合:この事をしてください、 '[' lotsofstuff ']のもののためにあなたはどのように役立ちますか? 'もの'のケア#noエスケープ、唯一の余分なステップ '?? – JoeyZhao