7 csdn_yuan88

尚未进行身份认证

我要认证

暂无相关简介

等级
TA的排名 2k+

[转]python进阶到高阶大全

 关键字is 和 == 的区别a = 'hello world'b = 'hello world'a == b #返回True a is b #返回False 注意:is 判断是否是一个ID, == 判断内容是否一致。深拷贝和浅拷贝import copya = [1,2,3,4,5]b = a #浅拷贝,a,b同时指向一个id,当其中一个修改时,另外一个也会被修改。c = copy.deepcopy(a) #深拷贝,c单独开辟一个id,用来存储和a一样的内容。d.

2020-06-07 09:26:53

[转]15个Pythonic的代码示例

来自:Python编程时光(微信号:Python-Time)Python由于语言的简洁性,让我们以人类思考的方式来写代码,新手更容易上手,老鸟更爱不释手。要写出 Pythonic(优雅的、地道的、整洁的)代码,还要平时多观察那些大牛代码,Github 上有很多非常优秀的源代码值得阅读,比如:requests、flask、tornado,这里小明收集了一些常见的 Pythonic 写法,帮助你养成写优秀代码的习惯。01. 变量交换Badtmp=aa=b...

2020-06-03 23:29:00

通俗易懂:说说 Python 里的线程安全、原子操作

在并发编程时,如果多个线程访问同一资源,我们需要保证访问的时候不会产生冲突,数据修改不会发生错误,这就是我们常说的 线程安全 。那什么情况下,访问数据时是安全的?什么情况下,访问数据是不安全的?如何知道你的代码是否线程安全?要如何访问数据才能保证数据的安全?本篇文章会一一回答你的问题。1. 线程不安全是怎样的?#要搞清楚什么是线程安全,就要先了解线程不安全是什么样的。比如下面这段代码,开启两个线程,对全局变量 number 各自增 10万次,每次自增 1。CopyCopyfrom threa..

2020-06-02 23:07:24

python进阶11并发之七多种并发方式的效率测试

原创博客地址:python进阶11并发之七多种并发方式的效率测试测试map,apply_async,gevent协程爬虫测试代码:网页爬虫函数代码 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 def thread_mult.

2020-06-01 23:32:40

python进阶10并发之六并行化改造

原创博客地址:python进阶10并发之六并行化改造图示变量含义说明:1个大step中包含3个小step,大step内部的第一步,二步,三步存在依赖关系(就是内部保持顺序执行)a1,b1,c1,表示子任务a的第一步,b的第一步,c的第一步.同理a2,表示子任务a的第二步。无并行水平并行优点:修改简单,容易排错缺点:使用场景有限,适合批量数据,不适合流式数据实现:pool().map(step1);pool().map(step2);pool().map(step3)垂..

2020-06-01 23:31:43

软件_linux命令cp目录路径和通配符 

原创博客地址:软件_linux命令cp目录路径和通配符 cp作为linux最常用命令,大部分情况正确使用,偶尔也会犯低级错误。比如,今天自己copy目录就犯错了。特此整理下以下基于ubuntu16测试(xxx含义为目录a/下的所有文件)copy 目录a 目录b 结果 cp a b b/a/xxx cp a/ b b/a/xxx cp a/* b b/xxx cp a b/ b/a/xxx .

2020-06-01 23:26:22

Queue - 一种线程安全的FIFO实现

<p>Queue - 一种线程安全的FIFO实现</p>Python的Queue模块提供一种适用于多线程编程的FIFO实现。它可用于在生产者(producer)和消费者(consumer)之间线程安全(thread-safe)地传递消息或其它数据,因此多个线程可以共用同一个Queue实例。Queue的大小(元素的个数)可用来限制内存的使用。Basic FIFO QueueQueue类实现了一个基本的先进先出(FIFO)容器,使用put...

2020-06-01 23:10:59

Python线程同步机制

<h1 id="python线程同步机制">Python线程同步机制</h1>同步访问共享资源在使用线程的时候,一个很重要的问题是要避免多个线程对同一变量或其它资源的访问冲突。一旦你稍不留神,重叠访问、在多个线程中修改(共享资源)等这些操作会导致各种各样的问题;更严重的是,这些问题一般只会在比较极端(比如高并发、生产服务器、甚至在性能更好的硬件设备上)的情况下才会出现。比如有这样一个情况:需要追踪对一事件处理的次数counter =...

2020-06-01 23:08:39

12.5 防止死锁的加锁机制

12.5 防止死锁的加锁机制¶问题¶你正在写一个多线程程序,其中线程需要一次获取多个锁,此时如何避免死锁问题。解决方案¶在多线程程序中,死锁问题很大一部分是由于线程同时获取多个锁造成的。举个例子:一个线程获取了第一个锁,然后在获取第二个锁的时候发生阻塞,那么这个线程就可能阻塞其他线程的执行,从而导致整个程序假死。解决死锁问题的一种方案是为程序中的每一个锁分配一个唯一的id,然后只允许按照升序规则来使用多个锁,这个规则使用上下文管理器是非常容易实现的,示例如下:import th...

2020-06-01 23:06:46

functools模块

1 functools函数functools模块用于高阶函数:作用与或者返回其它函数的函数。一般来说,对于该模块,任何可调用对象都可以视为一个函数。functools模块定义了以下函数:1.1 functools.cmp_to_key(func)版本3.2中新增。将旧风格的比较函数转换为key函数。用于接收key函数的工具(例如sorted(),min(),max(),heapq.nlargest(),heapq.nsmallest(),itertools.groupby())。该函数主要用作支

2020-06-01 23:05:42

python-多线程共享内存

概述本文介绍多线程 共享内存,一个线程修改变量,一个线程访问变量案例一声明局部变量(该变量不能是数字或字符串),通过 Thread类的args参数,将局部变量传递给执行函数,让两个线程共享变量#coding=utf-8import threadingimport timeimport oscount=10def modifycount(nums): #获取当前线程对象 t=threading.current_thread() for index in range(count):

2020-06-01 23:03:21

[转]浅谈 python multiprocessing(多进程)下如何共享变量

2019独角兽企业重金招聘Python工程师标准>>> 1、问题:群中有同学贴了如下一段代码,问为何 list 最后打印的是空值?frommultiprocessingimportProcess,Managerimportos manager=Manager()vip_list=[]#vip_list=manager.list() deftestFunc(cc):vip_list.append(cc)print'process...

2020-06-01 22:59:57

[转]5个有趣的Python小知识,返回结果让人出乎意料~

1 字符串驻留In [1]: a = 'something' ...: b = 'some'+'thing' ...: id(a)==id(b)Out[1]: True如果上面例子返回True,但是下面例子为什么是False:In [1]: a = '@zglg.com' In [2]: b = '@zglg'+'.com' In [3]: id(a)==id(b)Out[3]: False这与Cpython 编译优化相关,行为称为字符串驻留,但驻留的字符串中只包含字母,数.

2020-06-01 22:58:50

[转]Python中多线程与多进程中的数据共享问题!

之前在写多线程与多进程的时候,因为一般情况下都是各自完成各自的任务,各个子线程或者各个子进程之前并没有太多的联系,如果需要通信的话我会使用队列或者数据库来完成,但是最近我在写一些多线程与多进程的代码时,发现如果它们需要用到共享变量的话,需要有一些注意的地方多线程之间的共享数据Python资源共享群:484031800标准数据类型在线程间共享看以下代码#coding:utf-8import threadingdef test(name,data): print("in thr

2020-05-30 19:46:44

[转]# python中init和new的区别

__init__和__new__都是python类中的内置方法new方法的参数是cls–当前类本身init方法的参数是slef–实例化的对象new方法:实例化对象(开辟内存空间)init方法:对实例化对象进行初始化操作new方法和init方法会在创建对象时自动被调用,new方法在init方法之前被调用new方法实例化对象(创建一个内存空间),将实例化的对象return给init,init再对这个实例对象(内存空间)进行初始化属性,如果new方法没有return,init方法不会被调...

2020-05-30 14:06:37

python进阶09并发之五生产者消费者

原创博客地址:python进阶09并发之五生产者消费者这也是实际项目中使用较多的一种并发模式,用Queue(JoinableQueue)实现,是Python中最常用的方式(这里的queue特指multiprocess包下的queue,非queue.Queue)。Queue 123456789101112131415161718192021222324252627282930313233343536373839.

2020-05-24 20:18:13

python进阶08并发之四map, apply, map_async, apply_async差异

原创博客地址:python进阶08并发之四map, apply, map_async, apply_async差异差异矩阵python封装了4种常用方法,用于实现并发其差异如下 Multi-args Concurrence Blocking Ordered-results map no yes yes yes apply yes no yes no map_async no yes no..

2020-05-24 20:17:29

python进阶07并发之三其他问题

原创博客地址:python进阶07并发之三其他问题何时使用多进程(线程)使用多进程or线程,对于python,考虑到GIL锁,基本上默认使用多进程就对了。除此之外,线程共享全局变量,进程全局变量则是隔离的,实际进程大多数情况需要通信的,所以也需要考虑共享数据读写问题处理。 决定因素稳定性和数据共享要求上(操作系统差异性,win偏好线程,linux偏好进程)性能上虽然线程较好,但实际除了大型互联网公司和部分专业性质软件,大多数中小型公司的并发量,并不会带来很大影响,况且目前服务器领域,基本上LIn

2020-05-24 20:16:51

python进阶06并发之二技术点关键词

原创博客地址:python进阶06并发之二技术点关键词GIL,线程锁python中存在GIL这个”线程锁”,关键地方可以使用c语言解决 GIL问题 然后可以提高cpu占用效率守护进程主进程创建守护进程1)守护进程会在主进程代码执行结束后就终止2)守护进程内无法再开启子进程,否则抛出异常:AssertionError: daemonic processes are not allowed to have children注意:进程之间是互相独立的,主进程代码运行结束,守护进程随即终止

2020-05-24 20:13:56

python进阶05并发之一基本概念

原创博客地址:python进阶05并发之一基本概念大多编程语言,一旦涉及并发,都会比较复杂,知识点也较多(大多为历史问题,很多技术点现在非常少使用了,但语言层面也提供支持,对于这些冷门点,只需要知道即可,使用时也尽量避免使用这种冷门技术,除非和应用场景非常匹配)。实际使用过程中,只需要知道各名词以及大概功能,大多现用现查,毕竟涉及点太多,而且使用频率也并非很高,一般也就新系统研发会使用,后续维护时基本不会涉及太多。进程状态和调度进程,线程,协程1、进程进程是具有一定独立功能的.

2020-05-24 20:12:03

查看更多

勋章 我的勋章
  • 专栏达人
    专栏达人
    授予成功创建个人博客专栏的用户。专栏中添加五篇以上博文即可点亮!撰写博客专栏浓缩技术精华,专栏达人就是你!
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv4
    勤写标兵Lv4
    授予每个自然周发布9篇以上(包括9篇)原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。