ホームページ  >  記事  >  バックエンド開発  >  Python のプロセスとスレッドを理解するにはどうすればよいですか?

Python のプロセスとスレッドを理解するにはどうすればよいですか?

乌拉乌拉~
乌拉乌拉~オリジナル
2018-08-23 17:41:321469ブラウズ

次の記事では、Python の プロセスとスレッドが何であるかを見てみましょう。 Python のプロセスとスレッド、および Python のプロセスとスレッド が Python プログラミングで果たせる役割について学びます。


「マルチタスク」とは何ですか?簡単に言えば、オペレーティング システムは複数のタスクを同時に実行できます。たとえば、ブラウザを使用してインターネットをサーフィンしたり、MP3 プレーヤーを聴いたり、Word で宿題に追いついたりすることはマルチタスクであり、少なくとも 3 つのタスクが同時に実行されます。同時にバックグラウンドで多くのタスクが静かに実行されていますが、それらはデスクトップには表示されません。

今はマルチコアCPUが普及していますが、昔のシングルコアCPUでも複数のタスクを実行できます。 CPU の実行コードは順次実行されるため、シングルコア CPU はどのようにして複数のタスクを実行するのでしょうか?

答えは、オペレーティング システムが各タスクを交互に実行するということです。タスク 1 は 0.01 秒間実行され、タスク 2 に切り替わり、タスク 2 は 0.01 秒間実行され、次にタスク 3 に切り替わり、0.01 秒間実行されます。 ...等々。表面的には各タスクが交互に実行されていますが、CPU の実行速度が速いため、すべてのタスクが同時に実行されているように感じられます。

マルチタスクの真の並列実行は、マルチコア CPU でのみ実現できます。ただし、タスクの数は CPU コアの数よりはるかに多いため、オペレーティング システムは自動的に多くのタスクを各コ​​アにスケジュールします。順番に実行します。

オペレーティング システムの場合、タスクはプロセスです。たとえば、ブラウザを開くとブラウザ プロセスが開始され、メモ帳を開くとメモ帳プロセスが開始され、2 つのメモ帳を開くとプロセスが開始されます。2 つのメモ帳プロセスが開始されます。 Word が開かれると Word プロセスが開始されます。

一部のプロセスでは、入力、スペル チェック、印刷などを同時に実行できる Word など、同時に複数の処理を実行できます。プロセス内で複数のことを同時に実行したい場合は、複数の「サブタスク」を同時に実行する必要があります。プロセス スレッド内でこれらを「サブタスク」と呼びます。

各プロセスは少なくとも 1 つのことを実行する必要があるため、プロセスには少なくとも 1 つのスレッドがあります。もちろん、Word のような複雑なプロセスは複数のスレッドを持つことができ、複数のスレッドを同時に実行することもできます。マルチスレッドの実行方法は複数のプロセスの実行方法と同じです。オペレーティング システムも複数のスレッドを素早く切り替え、すべてのスレッドが交互に短時間実行され、同時に実行されているように見えます。もちろん、実際に複数のスレッドを同時に実行するには、マルチコア CPU が必要です。

以前に作成したすべての Python プログラムは、単一のタスクを実行するプロセスです。つまり、スレッドが 1 つだけあります。複数のタスクを同時に実行したい場合はどうすればよいでしょうか?

解決策は 2 つあります:

1 つは、複数のプロセスを開始することです。各プロセスにはスレッドが 1 つしかありませんが、複数のプロセスは複数のタスクを一緒に実行できます。

もう 1 つの方法は、プロセスを開始し、1 つのプロセス内で複数のスレッドを開始して、複数のスレッドが複数のタスクを一緒に実行できるようにすることです。

もちろん、3 番目の方法もあります。これは、複数のプロセスを開始し、各プロセスが複数のスレッドを開始して、より多くのタスクを同時に実行できるようにすることです。もちろん、このモデルはより複雑であり、実際にはほとんど使用されません。

要約すると、マルチタスクを実装するには 3 つの方法があります:

1. マルチプロセス モード;

2. マルチスレッド モード;

3 .マルチプロセスおよびマルチスレッドモード。

複数のタスクを同時に実行します。通常、タスクは無関係ではありませんが、相互に通信して調整する必要があります。場合によっては、タスク 1 を一時停止し、タスク 2 が完了するまで待ってから続行する必要があります。タスク 3 とタスク 4 を同時に実行できない場合があるため、マルチプロセスおよびマルチスレッド プログラムの複雑さは、前に作成した単一プロセスおよび単一スレッドのプログラムよりもはるかに高くなります。

非常に複雑でデバッグが難しいため、必要がない限りマルチタスクを書きたくありません。ただし、マルチタスクなしでは実行できない場合も多くあります。コンピュータで映画を見ることを考えてください。1 つのスレッドでビデオを再生し、別のスレッドでオーディオを再生する必要があります。それ以外の場合、単一のスレッドで実装されている場合は、ビデオを最初に再生してからオーディオを再生するか、オーディオを最初に再生してからオーディオを再生する必要があります。次にビデオですが、これは明らかに不可能です。

Python はマルチプロセスとマルチスレッドの両方をサポートします。

以上がこの記事の内容です。この記事では主に

python のプロセスやスレッドに関する知識を紹介します。上記の内容を理解するために活用していただければ幸いです。この記事で説明したことがあなたのお役に立ち、Python の学習が容易になることを願っています。 関連知識の詳細については、php 中国語 Web サイトの

Python チュートリアル

列を参照してください。

以上がPython のプロセスとスレッドを理解するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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