【python自动化第十篇:】,,复习:  线程与进程


复习:

  线程与进程的区别:

    进程:资源的集合

    线程:最小调度单位

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

信号量:也相当于是lock

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

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

        先进先出(FIFO)

        后进先出(LIFO)

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

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

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

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

推荐的书:

  《失控》,《必然》

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

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

今天的课程:

govent协程select\poll\epoll异步I/O事件驱动python连接mysql的基本操作rabbitmq队列redis/memcached缓存paramiko sshtwisted网络框架

一、多进程

  解决多核问题而生

单个进程:

#!/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自动化第十篇:】

相关内容

    暂无相关文章

评论关闭