开启线程的两种方式

1
2
3
4
5
6
7
8
9
10
#线程开启一
from threading import Thread
import time
def sayhi(name):
    time.sleep(2)
    print('%s say hello'%name)
if __name__ == '__main__':
    t = Thread(target=sayhi,args=('egon',))
    t.start()       #刚刚开启就调用,因为还睡了两秒,所以先执行主线程
    print('主线程')

  

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#开启线程方式二
from threading import Thread
import time
class Sayhi(Thread):
    def __init__(self,name):
        super().__init__()
        self.name = name
    def run(self):     #名字必须为run
        time.sleep(2)
        print('%s say hello'%self.name)
if __name__ == '__main__':
    t = Sayhi('egon')
    t.start()    #start开始会运行run函数
    print('主线程')

 在一个进程字儿开启多个线程与开启多个进程的区别

1
2
3
4
5
6
7
8
9
10
from threading import Thread             #线程模块
from multiprocessing import Process         #进程模块
import os
def work():
    print('hello')
if __name__ == '__main__':
    # t = Thread(target=work)    #开启线程速度较快
    t = Process(target=work)     #重新申请内存空间,速度慢
    t.start()
    print('主线程:%s'%os.getpid())

  线程与进程的区别

 线程中所有的数据共享

守护线程与守护进程的异同:

  主线程会等到所有非守护线程结束,才销毁守护线程

  主进程的代码运行完毕,就会销毁守护进程,然后等非守护进程运行完毕,主进程结束。

复制代码
 1 from threading import Thread
 2 import time
 3 def foo():
 4     print(123)
 5     time.sleep(2)
 6     print('end123')
 7 def bar():
 8     print(456)
 9     time.sleep(1)
10     print('end456')
11 if __name__ == '__main__':
12     t1 = Thread(target=foo)
13     t2 = Thread(target=bar)
14     t1.daemon = True
15     t1.start()
16     t2.start()
17     print('this is father')
守护进程与守护线程
复制代码
posted @   一石数字欠我15w!!!  阅读(507)  评论(0编辑  收藏  举报
编辑推荐:
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
阅读排行:
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 如何使用 Uni-app 实现视频聊天(源码,支持安卓、iOS)
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
点击右上角即可分享
微信分享提示