![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
并发编程
miaoqinian
这个作者很懒,什么都没留下…
展开
-
(python)gevent模块(协程用到)
Gevent 是一个第三方库,可以轻松通过gevent实现并发同步或异步编程。用法:g=gevent.spawn(func,1,……,x=3,……)#创建一个协程对象g ,spawn括号内第一个参数是函数名,后面可以有多个参数(位置参数,关键字参数)。g.join()#等待结束g.value#拿到func的返回值。遇到IO阻塞时会自动切换任务:import geventdef f1():...原创 2018-05-02 20:08:49 · 2791 阅读 · 0 评论 -
(python)生产者消费者模型
生产者消费者模型当中有两大类重要的角色,一个是生产者(负责造数据的任务),另一个是消费者(接收造出来的数据进行进一步的操作)。为什么要使用生产者消费者模型? 在并发编程中,如果生产者处理速度很快,而消费者处理速度比较慢,那么生产者就必须等待消费者处理完,才能继续生产数据。同样的道理,如果消费者的处理能力大于生产者,那么消费者就必须等待生产者。为了解决这个等待的问题,就引入了生产者与...原创 2018-04-25 16:06:57 · 14755 阅读 · 5 评论 -
(python)互斥锁
进程之间的数据不共享,但可共享同一资源,所以访问同一文件,或同一个打印终端,是没有问题的,而共享带来的是竞争,竞争的结果就会产生错乱。看下面并发打印三个人的信息:from multiprocessing import Processimport random,timedef task1(): time.sleep(random.randint(1,3)) print('ta...原创 2018-04-25 11:05:31 · 608 阅读 · 0 评论 -
(python)子进程(Process类的使用)
Python提供了multiprocessing模块来开启子进程,并在子进程中执行我们定制的任务。提一嘴(multiprocessing模块的功能众多,支持子进程,通信,共享数据,执行不同形式的同步。为些它提供了Process、Queue、Pipe、Lock等组件。)创建进程的类Process:实例化Process类可得到一个对象,来启一个进程。我们来看一下它的参数:group参数未使用,值始终为...原创 2018-04-24 12:02:37 · 44345 阅读 · 3 评论 -
(python)多线程
线程指的是一条流水线的工作过程。进程根本就不是一个执行单位,其实是一个资源单位。 一个进程内必须带一个线程,因为线程才是执行单位。 在传统的操作系统中,每一个进程有一个资源空间,而默认就有一个控制线程.线程是一条流水线工作过程,而一条流水线必须在一个车间内.一个车间的工作过程,就相当于一个进程,车间负责把资源整合到一起,让这些资源给多条流水线使用. 所以,进程是只是用来开...原创 2018-04-26 14:41:05 · 1728 阅读 · 2 评论 -
(python)socketserver的使用
socketserver基于TCP下的使用:服务端import socketserverclass MyTcpHandler(socketserver.BaseRequestHandler): def handle(self): while True: try: data=self.request.recv(102...原创 2018-05-04 20:36:32 · 733 阅读 · 0 评论 -
Cpython的GIL全局解释器锁
我们要知道一点GIL并不是Python的特性,它是Python解释器Cpython引入的一个概念。就好比C++这门语言,可以用不同的编译器来编译成可执行代码。它的编译器有GCC,INTEL C++,VIsual C++等。Python也一样,同样代码可以通过JPython,PyPy,Cpthon等环境中解释执行。像其中的JPython,就没有GIL。但是Cpython是大部分环境下默认的Pytho...原创 2018-04-27 18:45:51 · 648 阅读 · 0 评论 -
进程池与线程池
为什么要用‘池’: 池是用来限制并发的任务的数目,限制我们的计算机在一个自己可承受的范围内去并发地执行任务。池子内什么时候装进程:并发的任务属于计算密集型。池子内什么时候装线程:并发的任务属于I/O密集型。进程池的使用from concurrent.futures import ProcessPoolExecutoimport time,os,randomdef task(x):...原创 2018-04-27 19:23:53 · 272 阅读 · 0 评论