この記事は、Python のマルチスレッドとスレッド ロックを簡単に理解 (コード) するものです。一定の参考価値があります。困っている友人は参照してください。お役に立てれば幸いです。
マルチスレッド スレッドモジュール スレッドの作成 独自のスレッドクラスの作成 スレッド通信 スレッド同期 相互排除メソッド スレッドロック @理解する必要があります! ! !
マルチスレッド
スレッドとは何ですか?
スレッドは、コンピュータのマルチコア リソースを使用してプログラムの同時実行を完了できるマルチタスク プログラミング方法でもあります。
スレッドは軽量プロセスとも呼ばれます
スレッドの特徴
スレッドはコンピュータのマルチコアによって割り当てられる最小単位です
プロセスには複数のスレッドを含めることができます
スレッドは、コンピュータ リソースを消費する実行中のプロセスでもあります。複数のスレッドがプロセスのリソースとスペースを共有します
スレッドの作成と削除は、プロセスよりもはるかに少ないリソースを消費します
複数のスレッドの実行は互いに干渉しません
#スレッドには、命令セット ID などの独自の属性もありますスレッド化モジュールはスレッドを作成しますt =threading.Thread( )name: スレッド名、空の場合のデフォルト値、Tread-1、Tread-2、Tread-3target: スレッド関数 args : 要素グループ、位置に従ってスレッド関数にパラメータを渡しますkwargs: 辞書、キー値に従って郡関数にパラメータを渡します関数: スレッド オブジェクトを作成しますパラメータt.start(): スレッドを開始し、スレッド関数を自動的に実行します。 t.join([timeout]): プロセスをリサイクルします t.is_alive( ): スレッドのステータスを表示しますt.name(): スレッド名を表示します t.setName(): スレッド名を設定します t.daemon 属性: Byデフォルトでは、メイン スレッドは終了し、ブランチ スレッドの実行継続には影響しません。If True に設定すると、ブランチ スレッドはメイン スレッドt.daemon = Truet とともに終了します。 setDaemon(Ture)メソッドの設定#!/usr/bin/env python3 from threading import Thread from time import sleep import os # 创建线程函数 def music(): sleep(2) print("分支线程") t = Thread(target = music) # t.start() # ****************************** print("主线程结束---------") '''没有设置的打印结果 主线程结束--------- 分支线程 ''' '''设置为True打印结果 主线程结束--------- '''
from threading import Thread import time class MyThread(Thread): name1 = 'MyThread-1' def __init__(self,target,args=(), kwargs={}, name = 'MyThread-1'): super().__init__() self.name = name self.target = target self.args = args self.kwargs = kwargs def run(self): self.target(*self.args,**self.kwargs) def player(song,sec): for i in range(2): print("播放 %s:%s"%(song,time.ctime())) time.sleep(sec) t =MyThread(target = player, args = ('亮亮',2)) t.start() t.join()
import threading from time import sleep def fun1(): print("bar拜山头") global s s = "天王盖地虎" def fun2(): sleep(4) global s print("我把限制解除了") e.set() # 解除限制,释放资源 def fun3(): e.wait() # 检测限制 print("说出口令") global s if s == "天王盖地虎": print("宝塔镇河妖,自己人") else: print("打死他") s = "哈哈哈哈哈哈" # 创建同步互斥对象 e = threading.Event() # 创建新线程 f1 = threading.Thread(target = fun1) f3 = threading.Thread(target = fun3) f2 = threading.Thread(target = fun2) # 开启线程 f1.start() f3.start() f2.start() #准备回收 f1.join() f3.join() f2.join()
1 with lock: 2 ... 3 ...
##解決策
同時実行を完了するプロセスを使用してみてください (言及されていないものと同じ)
C インタープリターの使用は適切ではありません (使用C#、JAVA)
使用してみる 複数のソリューションを組み合わせて同時操作が実行され、スレッドが高遅延 IO
として使用されます。以上がPython マルチスレッドとスレッド ロックの簡単な理解 (コード)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。