风-fmgao

导航

随笔分类 -  network_programming_advanced

1 2 下一页

python并发编程之多进程理论部分
摘要:原文连接:http://www.cnblogs.com/linhaifeng/articles/7430066.html#_label4 一 什么是进程 进程:正在进行的一个过程或者说一个任务。而负责执行任务则是cpu。 举例(单核+多道,实现多个进程的并发执行): egon在一个时间段内有很多任务 阅读全文

posted @ 2018-09-26 13:53 风-fmgao 阅读(176) 评论(0) 推荐(0)

IO模型比较分析
摘要:异步IO(Asynchronous I/O) Linux下的asynchronous IO其实用得不多,从内核2.6版本才开始引入。先看一下它的流程: 用户进程发起read操作之后,立刻就可以开始去做其它的事。而另一方面,从kernel的角度,当它受到一个asynchronous read之后,首先 阅读全文

posted @ 2018-06-20 16:50 风-fmgao 阅读(212) 评论(0) 推荐(0)

select,poll,epoll,selectors
摘要:一 了解select,poll,epoll 二 selectors模块 这三种IO多路复用模型在不同的平台有着不同的支持,而epoll在windows下就不支持,好在我们有selectors模块,帮我们默认选择当前平台下最合适的 基于selectors模块实现并发的FTP 参考:链接: https: 阅读全文

posted @ 2018-06-20 16:48 风-fmgao 阅读(276) 评论(0) 推荐(0)

多路复用IO
摘要:多路复用IO(IO multiplexing) IO multiplexing这个词可能有点陌生,但是如果我说select/epoll,大概就都能明白了。有些地方也称这种IO方式为事件驱动IO (event driven IO)。我们都知道,select/epoll的好处就在于单个process就可 阅读全文

posted @ 2018-06-20 16:38 风-fmgao 阅读(146) 评论(0) 推荐(0)

非阻塞IO
摘要:非阻塞IO(non-blocking IO) Linux下,可以通过设置socket使其变为non-blocking。当对一个non-blocking socket执行读操作时,流程是这个样子: 从图中可以看出,当用户进程发出read操作时,如果kernel中的数据还没有准备好,那么它并不会bloc 阅读全文

posted @ 2018-06-20 15:57 风-fmgao 阅读(145) 评论(0) 推荐(0)

阻塞IO(blocking IO)
摘要:在linux中,默认情况下所有的socket都是blocking,一个典型的读操作流程大概是这样: 当用户进程调用了recvfrom这个系统调用,kernel就开始了IO的第一个阶段:准备数据。对于network io来说,很多时候数据在一开始还没有到达(比如,还没有收到一个完整的UDP包),这个时 阅读全文

posted @ 2018-06-19 22:58 风-fmgao 阅读(512) 评论(0) 推荐(0)

IO模型介绍
摘要:IO模型介绍 为了更好地了解IO模型,我们需要事先回顾下:同步、异步、阻塞、非阻塞 https://www.cnblogs.com/fmgao-technology/p/9706485.html 同步(synchronous) IO和异步(asynchronous) IO,阻塞(blocking) 阅读全文

posted @ 2018-06-19 22:57 风-fmgao 阅读(132) 评论(0) 推荐(0)

gevent实现套接字
摘要:server #!/usr/bin/env python # encoding: utf-8 # Date: 2018/6/17from gevent import monkey,spawn;monkey.patch_all()from socket import *# 负责通信def commun 阅读全文

posted @ 2018-06-19 21:53 风-fmgao 阅读(117) 评论(0) 推荐(0)

gevent异步,io自动切换
摘要:#!/usr/bin/env python # encoding: utf-8 # Date: 2018/6/19# # from gevent import monkey # 这俩行必须放在首行,下面就可以使用time(非gevent)的io# # monkey.patch_all() # 相当于 阅读全文

posted @ 2018-06-19 21:27 风-fmgao 阅读(214) 评论(0) 推荐(0)

协程小示例
摘要:#!/usr/bin/python3# -*- coding: utf-8 -*-# @Time : 2018/6/19 15:03# @File : 协程.py# 协程:单线程下实现并发import timedef producer(): g = consumer() next(g) for i 阅读全文

posted @ 2018-06-19 16:27 风-fmgao 阅读(126) 评论(0) 推荐(0)

协程基础
摘要:一 引子 一:其中第二种情况并不能提升效率, 只是为了让cpu能够雨露均沾,实现看起来所有任务都被“同时”执行的效果,如果多个任务都是纯计算的,这种切换反而会降低效率。为此我们可以基于yield来验证。yield本身就是一种在单线程下可以保存任务运行状态的方法,我们来简单复习一下 单纯地切换反而会降 阅读全文

posted @ 2018-06-19 16:26 风-fmgao 阅读(151) 评论(0) 推荐(0)

异步调用回调实例
摘要:#!/usr/bin/python3# -*- coding: utf-8 -*-# @Time : 2018/6/19 14:30# @File : 进程池线程池练习.pyfrom concurrent.futures import ThreadPoolExecutorimport request 阅读全文

posted @ 2018-06-19 14:54 风-fmgao 阅读(101) 评论(0) 推荐(0)

异步调用与回调机制
摘要:#!/usr/bin/python3# -*- coding: utf-8 -*-# @Time : 2018/6/19 14:05# @File : 异步调用与回调机智.py """ 同步调用和阻塞不一样: 同步调用不管是io型程序还是计算型程序,执行一个程序之后就是等待, 阻塞是io型特有的,因 阅读全文

posted @ 2018-06-19 14:29 风-fmgao 阅读(93) 评论(0) 推荐(0)

初探进程池线程池
摘要:#!/usr/bin/python3# -*- coding: utf-8 -*-# @Time : 2018/6/19 10:20# @File : 进程池线程池.py# ProcessPoolExecutor和ThreadPoolExecutor接口一样# 计算密集型--进程 ,io密集型--线 阅读全文

posted @ 2018-06-19 11:06 风-fmgao 阅读(89) 评论(0) 推荐(0)

多线程并发简单版
摘要:server #!/usr/bin/python3# -*- coding: utf-8 -*-# @Time : 2018/6/19 9:33# @File : server1.py# from socket import *# from threading import Thread### de 阅读全文

posted @ 2018-06-19 09:53 风-fmgao 阅读(92) 评论(0) 推荐(0)

队列queue
摘要:#!/usr/bin/python3# -*- coding: utf-8 -*-# @Time : 2018/6/19 9:11# @File : 线程queue.pyimport queue# q = queue.Queue(3) # 先进先出- 队列## q.put('first')# q.p 阅读全文

posted @ 2018-06-19 09:31 风-fmgao 阅读(114) 评论(0) 推荐(0)

验证码-定时器版
摘要:#!/usr/bin/python3# -*- coding: utf-8 -*-# @Time : 2018/6/19 8:50# @File : 定时器.py# 简单定时器# from threading import Timer## def task(name):# print('hello 阅读全文

posted @ 2018-06-19 09:10 风-fmgao 阅读(142) 评论(0) 推荐(0)

event事件
摘要:#!/usr/bin/env python # encoding: utf-8 # Date: 2018/6/18# from threading import Thread,Event# import time# event = Event()# # event.wait()# # event.s 阅读全文

posted @ 2018-06-18 23:39 风-fmgao 阅读(105) 评论(0) 推荐(0)

信号量
摘要:#!/usr/bin/env python # encoding: utf-8 # Date: 2018/6/18from threading import Thread,Semaphore,currentThreadimport timeimport randomsm = Semaphore(3) 阅读全文

posted @ 2018-06-18 23:17 风-fmgao 阅读(89) 评论(0) 推荐(0)

互斥锁和死锁
摘要:#!/usr/bin/env python # encoding: utf-8 # Date: 2018/6/18# # 死锁# from threading import Thread,Lock# import time# mutexA = Lock()# mutexB = Lock()### c 阅读全文

posted @ 2018-06-18 23:06 风-fmgao 阅读(157) 评论(0) 推荐(0)

1 2 下一页