Day10 多线程理论 开启线程
Posted 不帅可以,但是必须要骚气
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Day10 多线程理论 开启线程相关的知识,希望对你有一定的参考价值。
多线程:
多线程和多进程的不同是他们占用的资源不一样,
一个进程里边可以包含一个或多个进程,
进程的开销大,线程的开销小。
打个比方来说:创建一个进程,就是创建一个车间。创建一个线程,就是在一个车间创建一个流水线。
怎么去开启一个线程:
方法一(直接用默认的类):
1 开启线程的方式一:使用替换threading模块提供的Thread 2 from threading import Thread 3 from multiprocessing import Process 4 5 def task(): 6 print(‘is running‘) 7 8 if __name__ == ‘__main__‘: 9 t=Thread(target=task,) 10 # t=Process(target=task,) 11 t.start() 12 print(‘主‘)
方法二(自己定义一个类,继承系统的类):
1 #开启线程的方式二:自定义类,继承Thread 2 from threading import Thread 3 from multiprocessing import Process 4 class MyThread(Thread): 5 def __init__(self,name): 6 super().__init__() #不破坏原有的类 7 self.name=name 8 def run(self): 9 print(‘%s is running‘ %self.name) 10 11 if __name__ == ‘__main__‘: 12 t=MyThread(‘egon‘) 13 # t=Process(target=task,) 14 t.start() 15 print(‘主‘)
在同时开始多个线程和多个进程的时候,多个线程的pid是不一样的,多个线程的pid是一样的。
可以利用这段代码测试下:
from threading import Thread from multiprocessing import Process import os def task(): print(‘%s is running‘ %os.getpid()) if __name__ == ‘__main__‘: # t1=Thread(target=task,) # t2=Thread(target=task,) t1=Process(target=task,) t2=Process(target=task,) t1.start() t2.start() print(‘主‘,os.getpid())
多个线程是共享同一个进程内的资源的。
以上是关于Day10 多线程理论 开启线程的主要内容,如果未能解决你的问题,请参考以下文章