ホームページ バックエンド開発 Python チュートリアル Pythonマルチスレッドプログラミングでjoin関数を使用した経験

Pythonマルチスレッドプログラミングでjoin関数を使用した経験

Jun 16, 2016 am 08:42 AM
python マルチスレッド化

今日は新吉へバッグを買いに行きましたが、午後遅くに戻ってきましたが、吐き気と頭痛がありました。吐き気の原因は、朝にまずいものを食べた+乗り物酔い+帰ってきたときに自動車事故の現場を見たことが原因で、頭痛はおそらく灼熱の太陽とエアコンの組み合わせが原因でした。学習する時間も気力もありません。このブログでは Python の小さな関数について話します。

チートスクールの専門上、先生はマルチスレッドプログラミングを教えたことがなく、マルチスレッドの概念も漠然と教えられていたので、私もPython初心者だったので、マルチスレッドに遭遇したときは唖然としました。他の人はそれを使っていますが、私は便利な結合関数を理解できません。朝、新吉に行く途中でこの問題のことを考えて吐き気がしましたが、帰ってからもコードを書いてテストし続け、ようやくある程度理解できました(Pythonの公式の英語の説明は理解できませんでした)。ネチズンの説明は十分に詳細ではなかったので、自分で理解する必要がありました)。
テストに使用したコードは次のとおりです:

コードをコピー コードは次のとおりです:

# コーディング: utf-8

# マルチスレッドで結合関数をテストします

インポートスレッド、時間
def doWaiting():
Print 'startwaiting1: ' + time.strftime('%H:%M:%S') + "n"
time.sleep(3)
Print 'stop wait1: ' + time.strftime('%H:%M:%S') + "n"
def doWaiting1():
Print 'startwaiting2: ' + time.strftime('%H:%M:%S') + "n"
time.sleep(8)
Print 'stop wait2: ', time.strftime('%H:%M:%S') + "n"
tsk = []
thread1 = threading.Thread(target = doWaiting)
thread1.start()
tsk.append(thread1)
thread2 = threading.Thread(target = doWaiting1)
thread2.start()
tsk.append(thread2)
print '結合開始: ' + time.strftime('%H:%M:%S') + "n"
tt の tsk:
tt.join()
print '終了結合: ' + time.strftime('%H:%M:%S') + "n"

この小さなプログラムは、thread1 と thread2 の 2 つのスレッドを使用します。スレッドによって実行されるアクションは、それぞれ doWaiting() と doWaiting1() です。関数本体は、print "start" + 3 秒間のスリープ + print "end" です。それぞれに付加された時刻。プログラムの実行プロセスを表示するために使用されます。その後、start() メソッドを使用して、2 つのスレッドの実行を同期的に開始します。次に、ループが開始され、2 つのスレッドの join() メソッドが呼び出されます。この前後で、print 関数が開始と終了をマークするために使用されます。主に tsk: tt.join() の tt を観察します。

join() がパラメータを取らない場合、実行は次のようになります:

ご覧のとおり、2 つのスレッドが並行して実行されます。プロセス 1 は 3 秒後に終了し、プロセス 2 は 8 秒後に終了します。その後、メイン プロセスに戻り、「end join」が出力されます。

次のパラメータは 2 秒のタイムアウト、つまり tt.join(2) に設定されており、実行は次のようになります:

2 つのスレッドが同時に実行を開始し、スレッド 1 の join(2) を実行し、スレッド 1 の実行を 2 秒待って無視し、スレッド 2 の join(2) を実行し、スレッド 2 の実行を 2 秒待機します。秒後、無視します (このプロセス中に、スレッド 1 の実行が終了し、スレッド 1 の終了情報が出力されます)、メイン プロセスの実行が開始され、「end join」が出力されます。スレッド 2 の実行は 4 秒後に終了します。

要約すると:

1. join メソッドの機能は、メインプロセスをブロックし (結合後のステートメントを実行できなくなる)、マルチスレッドの実行に重点を置くことです。

2. マルチスレッドおよび複数の結合の場合、各スレッドの結合メソッドは順番に実行され、次の結合メソッドは前の結合メソッドが完了した後にのみ実行できます。

3. パラメータがない場合は、スレッドが終了するまで待ってから、次のスレッドの結合の実行を開始します。

4. パラメータを設定した後、スレッドを一定時間待機し、無視します (スレッドは終了しません)。いずれにしても、その後のメイン処理は実行可能であることを意味する。

最後に、パラメータが2の場合のプログラム実行フローチャートを添付します。orzは自分で描いたので分かりやすいです。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

C言語合計の機能は何ですか? C言語合計の機能は何ですか? Apr 03, 2025 pm 02:21 PM

C言語に組み込みの合計機能はないため、自分で書く必要があります。合計は、配列を通過して要素を蓄積することで達成できます。ループバージョン:合計は、ループとアレイの長さを使用して計算されます。ポインターバージョン:ポインターを使用してアレイ要素を指し示し、効率的な合計が自己概要ポインターを通じて達成されます。アレイバージョンを動的に割り当てます:[アレイ]を動的に割り当ててメモリを自分で管理し、メモリの漏れを防ぐために割り当てられたメモリが解放されます。

誰がより多くのPythonまたはJavaScriptを支払われますか? 誰がより多くのPythonまたはJavaScriptを支払われますか? Apr 04, 2025 am 12:09 AM

スキルや業界のニーズに応じて、PythonおよびJavaScript開発者には絶対的な給与はありません。 1. Pythonは、データサイエンスと機械学習でさらに支払われる場合があります。 2。JavaScriptは、フロントエンドとフルスタックの開発に大きな需要があり、その給与もかなりです。 3。影響要因には、経験、地理的位置、会社の規模、特定のスキルが含まれます。

XMLをMP3に変換する方法 XMLをMP3に変換する方法 Apr 03, 2025 am 09:00 AM

XMLをMP3に変換する手順には、XMLからオーディオデータを抽出します:XMLファイルを解析し、オーディオデータを含むBase64エンコード文字列を見つけ、バイナリ形式にデコードします。オーディオデータをmp3にエンコードします:mp3エンコーダーをインストールし、エンコードパラメーターを設定し、バイナリオーディオデータをmp3形式にエンコードし、ファイルに保存します。

XMLの形式を変更する方法 XMLの形式を変更する方法 Apr 03, 2025 am 08:42 AM

XML形式を変更する方法はいくつかあります。Atepadなどのテキストエディターを使用して手動で編集する。 XmlBeautifierなどのオンラインまたはデスクトップXMLフォーマットツールを使用して自動的にフォーマットします。 XSLTなどのXML変換ツールを使用して変換ルールを定義します。または、Pythonなどのプログラミング言語を使用して解析および操作します。元のファイルを変更してバックアップするときは注意してください。

独特の目標は関連していますか? 独特の目標は関連していますか? Apr 03, 2025 pm 10:30 PM

明確で明確なものは区別に関連していますが、それらは異なる方法で使用されます。明確な(形容詞)は、物事自体の独自性を説明し、物事の違いを強調するために使用されます。明確な(動詞)は、区別の動作または能力を表し、差別プロセスを説明するために使用されます。プログラミングでは、個別は、重複排除操作などのコレクション内の要素の独自性を表すためによく使用されます。明確なは、奇数や偶数の偶数を区別するなど、アルゴリズムまたは関数の設計に反映されます。最適化する場合、異なる操作は適切なアルゴリズムとデータ構造を選択する必要がありますが、異なる操作は、論理効率の区別を最適化し、明確で読み取り可能なコードの書き込みに注意を払う必要があります。

Cで理解する方法!x? Cで理解する方法!x? Apr 03, 2025 pm 02:33 PM

!X理解!Xは、C言語の論理的な非操作者です。 Xの値をブーリングします。つまり、虚偽の真の変化、trueへの誤った変更です。ただし、Cの真実と虚偽はブール型ではなく数値で表されていることに注意してください。非ゼロは真であると見なされ、0のみが偽と見なされます。したがって、!xは正の数と同じ負の数を扱い、真実と見なされます。

C言語ユーザー識別子にはスペースが含まれていますか? C言語ユーザー識別子にはスペースが含まれていますか? Apr 03, 2025 pm 01:51 PM

C言語識別子は、混乱や維持の困難を引き起こす可能性があるため、スペースを含めることができません。特定のルールは次のとおりです。それらは、文字またはアンダースコアから始めなければなりません。文字、番号、またはアンダースコアを含めることができます。違法な文字(特別なシンボルなど)を含めることはできません。

c言語でsumとはどういう意味ですか? c言語でsumとはどういう意味ですか? Apr 03, 2025 pm 02:36 PM

Cには組み込みの合計関数はありませんが、次のように実装できます。ループを使用して要素を1つずつ蓄積します。ポインターを使用して、要素に1つずつアクセスして蓄積します。大量のデータ量については、並列計算を検討してください。

See all articles