スレッドとは何ですか
スレッドは、プログラム実行の最小単位であり、プロセスは、組立ラインの作業のようなものです。
主要なプロセスでのデータのコピーのすべてのリソース、その後、メモリ内のオープンスペースのプロセスを、その後、呼び出し元のスレッドがコードを実行する:プロセスを開きます
プロセスは、リソースユニットで、スレッドは、実行の単位であります
VSプロセス二つのスレッド
- オープンプロセスのオーバーヘッドが開いているスレッドのコストよりもはるかに大きく、非常に大きいです
- オープンスレッドの速度が速く、数回を数百倍に、非常に高速であります
- 同じプロセスは、スレッドとスレッドデータ間で共有することができ、我々はプロセスとプロセスの間で通信するキューと他の方法の助けを必要としています。
- メインスレッドと子プロセスの終わりに他のサブスレッドの終了を待つメインスレッドの終了後、(NO一次または二次)の別個のステータスをスレッドありません。
3つのスレッドを開くには二つの方法
from threading import Thread
import time
def task(name):
print(f'{name}is running')
time.sleep(1)
print(f'{name}is gone')
if __name__ == '__main__':
t1 = Thread(target=task,args=('大黑',))
t1.start()
print('主线程')
from threading import Thread
import time
class MyThread(Thread):
def __init__(self,name):
super().__init__()
self.name = name
def run(self):
print(f'{self.name}is running')
time.sleep(1)
print(f'{self.name}is gone')
if __name__ == '__main__':
t1 = MyThread('大黑')
t1.start()
print('主进程')
4つのスレッドの他の方法
from threading import Thread,currentThread,enumerate,activeCount
import os,time
def task():
print(currentThread())
time.sleep(1)
print('666')
if __name__ == '__main__':
t1 = Thread(target=task,name='线程1')
t2 = Thread(target=task,name='线程2')
t1.start()
t2.start()
time.sleep(2)
print(t1.isAlive()) # 判断线程是否活着
print(t1.getName()) # 获取线程名
t1.setName('子进程1') # 设置线程名
print(t1.getName())
print(currentThread()) # 获取当前线程的对象
print(enumerate()) # 返回一个列表,包含所有的线程对象
print(activeCount()) # 返回正在运行的线程数量
print(f'主线程{os.getpid()}')