首页 > 编程语言 > 详细

【python自动化第十篇:】

时间:2016-09-26 20:14:10      阅读:294      评论:0      收藏:0      [点我收藏+]

复习:

  线程与进程的区别:

    进程:资源的集合

    线程:最小调度单位

  • 进程至少包含一个线程
    • 线程之间的内存是共享的,两个线程操作同一个数据就会修改整个结果(需要mutex加锁来保持数据的一致性),递归锁,join(等待)

           信号量:也相当于是lock

    守护线程:服务于非守护线程;

    quene:程序的解耦;提高效率;也是有序的容器;队列只有一份数据,取完了就没有了

        先进先出(FIFO)

        后进先出(LIFO)

    生产者消费者模型:也就是为了实现解耦

    event:事件---红绿灯实验

i/o不占用cpu,计算占用

python多线程不适合cpu密集型操作任务,适合i/o密集型任务

 

推荐的书:

  《失控》,《必然》

  《数学之美》,《浪潮之巅》

鸡汤总结:做一个有素质的人

今天的课程:

  1. govent协程
  2. select\poll\epoll异步I/O事件驱动
  3. python连接mysql的基本操作
  4. rabbitmq队列
  5. redis/memcached缓存
  6. paramiko ssh
  7. twisted网络框架

一、多进程

  解决多核问题而生

单个进程:

#!/usr/bin/env python
# -*- coding:utf-8 -*-
import multiprocessing,time
def run(name):                      #定义函数
    time.sleep(1)
    print(‘hello‘,name)                        
if __name__ == ‘__main__‘:    
    p = multiprocessing.Process(target=run,args=(‘hehe‘,))        #实例化一个进程
    p.start()                                                      #执行进程
    p.join()                                                       #进程等待

多进程:

#!/usr/bin/env python
# -*- coding:utf-8 -*-
import multiprocessing,time

def run(name):
    print(‘hello‘,name)
    time.sleep(1)
if __name__ == ‘__main__‘:
    for i in range(10):          #定义循环
        p = multiprocessing.Process(target=run,args=("hehe %s"%i,))
        p.start()

获取进程id:

#!/usr/bin/env python
# -*- coding:utf-8 -*-
import multiprocessing,os

def info(title):                  #信息展示函数
    print(title)
    print(‘module name:‘,__name__) #打印模块名称
    print(‘parent process id‘,os.getppid()) #父进程id获取
    print(‘process id‘,os.getpid())     #当前进程id
    print(‘\n\n‘)

def f(name):                               #定义功能函数
    info(‘\033[31;1mfunction f\033[0m‘)
    print(‘hello‘,name)

if __name__ == ‘__main__‘:                  #主进程调用
    info(‘\033[32;1mmain process line\033[0m‘)
    p = multiprocessing.Process(target=f,args=(‘hehe‘,))     #定义进程
    p.start()                                                 #开始进程
    p.join()                                                  #进程等待

每一个子进程都是有其父进程启动的

 

 

 

 

 

 

 

 

 

    

【python自动化第十篇:】

原文:http://www.cnblogs.com/wanghui1991/p/5910332.html

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