码迷,mamicode.com
首页 > 编程语言 > 详细

doraemon的python 进程模块和线程

时间:2019-08-24 19:10:47      阅读:91      评论:0      收藏:0      [点我收藏+]

标签:执行   公司   工作   print   打印   rand   发送邮件   ``   range   

#### 9.2.1 进程模块

```python
from multiprocessing import Process
import time
import os

def func():
    print(start,os.gitpid())
    time.sleep(1)
    print(end,os.gitpid())
    
if __name__ == __main__:  #主进程在子进程中不会执行
    p = Process(target=func) #创建一个即将执行func函数的对象
    p.start()   #开启一个进程 #异步,开启这个进程但不会等这个进程开启
    print(main:,os.getpid())

#注意:
# windows操作系统执行开启进程的代码
    # 实际上新的子进程需要通过import父进程的代码来完成数据的导入工作
    # 所以有一些内容我们只希望在父进程中完成,就写在if __name__ == ‘__main__‘:下面
    
# 主进程的结束逻辑
    # 主进程的代码结束
    # 所有的子进程结束
    # 给子进程回收资源
    # 主进程结束

```

#### 9.2.2 join方法:阻塞,直到子进程结束就结束

```python
import time
from multiprocessing import Process

def send_mail():
    time.sleep(3)
    print(发送了一封邮件)
if __name__ == __main__:
    p = Process(target=send_mail)
    p.start()
    print(join start)
    p.join()
    print(5000封邮件已经发送)
```

```python
#开启10个进程给公司5000个人发送邮件,发送完邮件之后,打印一个消息
import time 
import random
from multiprocessing import Process
def send_mail(a):
    time.sleep(random.random())
    print(发送了一封邮件)
if __name__ == __main__
    l = []
    for i in range(10):
        p = Process(target=send_mail,args(i,))#args只是为了判断第几次执行
        p.start()
        l.append(p)
    print(l)
    for p in l:
        p.join()
```

#### 9.2.3 if __name__ == ‘__main__‘

```python
if __name__ == __main__:
    # 控制当这个py文件被当作脚本直接执行的时候,就执行这里面的代码
    # 当这个py文件被当作模块导入的时候,就不执行这里面的代码
    print(hello hello)
# __name__ == ‘__main__‘
    # 执行的文件就是__name__所在的文件
# __name__ == ‘文件名‘
    # __name__所在的文件被导入执行的时候
```



### 9.3 线程(开销小)

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

 

doraemon的python 进程模块和线程

标签:执行   公司   工作   print   打印   rand   发送邮件   ``   range   

原文地址:https://www.cnblogs.com/doraemon548542/p/11405458.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!