2017-07-08 31 views
0

Pythonライブラリの使用import threadingthreading.active_count()関数がアクティブなスレッドの数を返します。しかし、正確に同じものを返すthreading.activeCount()関数。Pythonのthreading.active_count()とthreading.activeCount()の違いは何ですか?

ヘルプ文字列もまったく同じです。

私の質問は、違いは何ですか?

彼らまったく同じであれば、これはそれが言うPEP 20、パイソンの禅、反するません。

There should be one-- and preferably only one --obvious way to do it. 

が、これは、下位互換性の問題だろうか?

答えて

3

Pythonは基本的にスレッドインターフェイス用のJava APIをクローンしています。したがって、Pythonの優先アンダースコアを使用するものと、後方互換性のためのcamelCaseのものがあります。スレッドモジュール内のcommentsは、

という名前に注意してください。このスレッドモデルはもともとJavaに触発されており、その言語のcamelCase関数とメソッド名の規約を継承していました。これらの元の名前は(Py3kの場合でも)廃止予定の危機に直面することはないため、このモジュールはそれらをPEP 8準拠の名前の別名として提供します。新しいPEP 8準拠の名前を使用すると、マルチプロセッシングモジュールでの置換が容易になることに注意してください。マルチプロセッシングモジュールでは、古いJavaの名前を使用できません。彼らは後方互換性の問題を回避するために、彼らreintroducedと一時的にdeprecated、しかし、CPythonの実装は、実際に古い機能を削除した1 commit

def active_count(): 
    """Return the number of Thread objects currently alive. 
    The returned count is equal to the length of the list returned by 
    enumerate(). 
    """ 
    with _active_limbo_lock: 
     return len(_active) + len(_limbo) 

activeCount = active_count 

あなたは、彼らはただお互いのためにaliasesている見ることができます。新しいコードにはcamelCase関数を使用しないでください。今は目に見えて非難されていませんが、camelCaseの機能はexplicitly documentedではありません。あなたはPEP8バージョンを好むべきです。

+1

他の非PEP8の名前は廃止され、削除されているので、 'threading'でいつも起こる可能性があります。 Py2からPy3へのクリーンアップは古い名前のいくつかを削除し、古いスクリプトを修正するために '2to3'コンバータスクリプトに任せました。新しいコードを書いているのであれば、PEP8スタイルに合っており、長期間保存される可能性が高いため、PEP8のアンダースコア付き小文字の名前を強くお勧めします。 – ShadowRanger

+1

私は正しい方向にあったが、後進のギアにあった。 +1 –

関連する問題