首页 > 代码库 > 【python自动化第十篇:】

【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,timedef 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,timedef 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,osdef 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自动化第十篇:】