많은 동시 프로그래밍 스레드
스레드는 무엇인가?
CPU 스레드가 단일 제어 흐름 서열을 의미 직접 실행 프로세스에서 병렬 처리의 복수의 서로 평행 한 다른 작업을 수행 할
如果把操作系统比作一个车间的话,而进程就是一个个车间,线程就是车间里边的一条条流水线,电源就是cpu
프로세스와 스레드의 차이점
- 线程 :单指代码的执行过程 - 进程:资源的申请与销毁的过程 - 进程内存空间彼此隔离 - 同一进程下的线程可以共享资源 - 进程需要申请资源开辟内存空间 慢 - 线程只是告诉操作系统一个执行方案 快
왜 사용하는 멀티 스레딩
- 多线程共享一个内存空间,节约资源 - 线程比进程更容易创建,在许多操作系统中,创建一个线程比创建一个进程要快10-100倍,在有大量线程需要动态和快速修改时,这一特性很有用 - 若多个线程都是cpu密集型的,那么并不能获得性能上的增强,但是如果存在大量的计算和大量的I/O处理,拥有多个线程允许这些活动彼此重叠运行,从而会加快程序执行的速度。 - 若多个线程都是cpu密集型的,那么并不能获得性能上的增强,但是如果存在大量的计算和大量的I/O处理,拥有多个线程允许这些活动彼此重叠运行,从而会加快程序执行的速度。
의 프로세스를 시작하는 두 가지 방법
길
from threading import Thread import time def task(): print("线程开启\n") time.sleep(2) print("线程结束\n") if __name__ == '__main__': t = Thread(target=task) t.start() print("主线程")
두 번째 방법
from threading import Thread import time class myt(Thread): def run(self): print("线程开启\n") time.sleep(2) print("线程结束\n") if __name__ == '__main__': t= myt() t.start() print("主进程")
스레드와 작동 속도를 처리
from threading import Thread from multiprocessing import Process def task(): print("线程开启") print("线程结束\n") def task1(): print("进程开启") print("进程结束\n") if __name__ == '__main__': t = Thread(target=task) t.start() print("主线程") p = Process(target=task1) p.start() print("主线程")
스레드는 메모리 공간을 공유
from threading import Thread x = 100 def task(): global x x =50 t = Thread(target=task) t.start() print(x) def task1(): global x x = 2 t1 = Thread(target=task1) t1.start() print(x)
사용법에 가입 스레드
from threading import Thread import time def tast(name,time_): print(f"{name} 开启") time.sleep(time_) print(f"{name} 结束") if __name__ == '__main__': t1 = Thread(target=tast,args=('线程1',1)) t2 = Thread(target=tast,args=('线程2',2)) t3 = Thread(target=tast,args=('线程3',3)) start = time.time() t1.start() t2.start() t3.start() t1.join() t2.join() t3.join() end = time.time() print("主线程") print(end-start)
다른 스레드 관련 방법
print("线程开启\n") time.sleep(2) print("线程结束\n") if __name__ == '__main__': t = Thread(target=task) t.start() # 检测线程是否活动 print(t.is_alive()) #返回线程名字 print(t.getName()) #修改线程名字 t.setName("线程1") print(t.getName()) #返回当前线程变量 print(threading.currentThread()) #返回一个包含正在运行的线程的list。正在运行指线程启动后、结束前,不包括启动前和终止后的线程。 print(threading.enumerate()) # 返回正在运行的线程数量,与len(threading.enumerate())有相同的结果 print(threading.activeCount()) print("主线程")
악마
메인 스레드에 대한 기다린 후 코드의 마지막 줄의 끝의 파괴를 완료
from threading import Thread import time def task(): print("这是子线程开始\n") time.sleep(2) print("这是子线程结束") if __name__ == '__main__': t = Thread(target=task) #将线程变成守护线程 t.daemon = True t.start() print("这是主线程")