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 多线程理论 开启线程的主要内容,如果未能解决你的问题,请参考以下文章

day33 网络编程之线程,并发

多线程

毕向东Java视频学习笔记Day11-Day13 多线程

python_day10

python之网络编程-多线程

并发编程目录