首页 > 编程语言 > 详细

doraemon的python 线程详解

时间:2019-08-29 00:37:24      阅读:98      评论:0      收藏:0      [点我收藏+]
### 9.3 线程(开销小)

- 线程是进程中的一部分,每一个进程至少有一个线程
- 进程是计算机最小的资源分配单位(进程是负责圈资源)
- 线程是计算机中能被CPU调度最小单位(线程是负责执行具体代码)
- 比较:
  - 进程:数据隔离 开销大 是一个资源分配单位
  - 线程:数据共享 开销小 是进程的一部分

#### 9.3.1 GIL 全局解释器锁

GIL锁:

- 保证了整个python程序中,只有一个线程被CPU执行
- 原因:cpython解释器中的特殊垃圾回收机制
- GIL锁导致了线程不能并行,可以并发

但是使用线程并不会影响高IO型的操作,只会对高计算型的成语有效率上的影响

#### 9.3.2 Thread模块

multiprocessing是完全房展threading的类写的,使用方法基本一样

```python
#单个子线程
from threading import Thread

def func():
    print(liujia)
    
Thread(target=func).start()

```

```python
#多个子线程
import os
import time
from threading import Thread

def func(i):
    print(start son thread,i)
    time.sleep(0.2)
    print(end,os.getpid())
    
for i in range(10):
    Thread(target=func,args=(i,)).start()
print(main)
```

```python
#join方法 阻塞 知道子进程执行结束
def func(i):
    print(start son thread,i)
    time.sleep(0.2)
    print(end,os.getpid())
    
t_l = []
for i in range(10):
    t = Thread(target=func,args=(i,))
    t.start()
    t_l.append(t)
for t in t_l:t.join()
print(子线程执行完毕)
    
```

```python
#面向对象启动线程
class MyThread(Thread):
    def __init__(self,i):
        self.i = i
        super().__init__()
    def run(self):
        print(start,self.i,self.ident)
        time.sleep(1)
        print(end,self.i)

for i in range(10):
    t = MyThread(i)
    t.start()
    print(t.ident)
```

```python
#线程里的一些其他方法
from threading import current_thread,enumerate,active_count
def func(i):
    t = current_thread()
    print(start son thread,i,t.ident)
    time.sleep(1)
    print(end son thread,i,os.getpid())

t = Thread(target=func,args=(1,))
t.start()
print(t.ident)
print(current_thread().ident)   # 水性杨花 在哪一个线程里,current_thread()得到的就是这个当前线程的信息
print(enumerate())
print(active_count())   # =====len(enumerate())
```

注意:

- 守护线程一直等到所有非守护线程结束才会结束
- 除了守护了主线程的代码之外也会守护子线程

 

doraemon的python 线程详解

原文:https://www.cnblogs.com/doraemon548542/p/11427302.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!