python自动化第十篇:

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python自动化第十篇:相关的知识,希望对你有一定的参考价值。

复习:

  线程与进程的区别:

    进程:资源的集合

    线程:最小调度单位

  • 进程至少包含一个线程
    • 线程之间的内存是共享的,两个线程操作同一个数据就会修改整个结果(需要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自动化第十篇:的主要内容,如果未能解决你的问题,请参考以下文章

Python之路,第十篇:Python入门与基础10

Python之路第十篇--HTML

Python 学习 第十篇 CMDB用户权限管理

Python开发第十篇:CSS

Python开发第十篇:RabbitMQ队列

python之旅十第十篇paramiko模块