摘要: 在多线程编程中,有两个必须要解决的问题,一个是线程通信,另一个是线程同步问题。 执行结果: -557629 478789 444414 -12991 原因分析: 关键在于赋值上面,当某个时间段,t1说a = 5000,t2说a=3000,那么到低是5000还是3000了, 谁先执行听谁的,如果a=3 阅读全文
posted @ 2019-08-02 18:21 明王不动心 阅读(381) 评论(0) 推荐(0) 编辑
摘要: 比如你爬取一个页面,爬取主页面是一个线程,爬取详情页又是一个线程,当你把主页面的内容拿到之后,你是否就需要将其发送给处理详情页的那个线程了。这就涉及到进程通讯问题了。线程间通讯一般有两种方式,共享变量和Queue 1.共享变量 共享变量利用的是线程之间共享运行环境这一机制。但是使用共享变量,可能不能 阅读全文
posted @ 2019-08-02 17:03 明王不动心 阅读(193) 评论(0) 推荐(0) 编辑
摘要: 操作系统能够调度和切换的最小单元实际上是线程。对于IO操作来说,多线程和多进程性能差别不大。有两种方法可以进行多线程编程。 1.使用多线程编程的两种方法 (1)直接实例化一个Thread对象 执行结果: task1开始执行 task2开始执行 执行时间:0.0009980201721191406 t 阅读全文
posted @ 2019-08-02 17:00 明王不动心 阅读(210) 评论(0) 推荐(0) 编辑
摘要: GIL:global interpreter lock(cpython)在python中,一个线程对应于c中的一个线程。gil使得同一个时刻只有一个线程在CPU上执行字节码(python在执行的时候会将py文件编译成字节码)。同时也预示着无法将多个线程映射到多个CPU上运行,无法体现多CPU的优势。 阅读全文
posted @ 2019-08-02 16:32 明王不动心 阅读(316) 评论(0) 推荐(0) 编辑
摘要: 一、进程和线程概论 1.什么是进程? 程序是存储在磁盘中的可执行的数据。进程可以看作是程序的一次执行,每个进程都有自己的内存空间和数据栈。进程间只能通讯,而不能直接共享信息。 2.什么是线程? 一个进程中可以有多个线程,一个进程中线程共享运行环境,也就是有相同的内存空间、数据栈等。比如你启动了一个p 阅读全文
posted @ 2019-08-02 16:16 明王不动心 阅读(163) 评论(0) 推荐(0) 编辑
摘要: 一、property 先看下面例子:依赖于birthday设置User对象的属性 但是这样好吗?如果是更加复杂的计算就必须以函数的方式返回。 虽然可以实现功能,但是明明是属性值却还要调用方法?有没有解决方案了?通过property关键字就可以实现。 @property可以把一个函数当作一个属性来供用 阅读全文
posted @ 2019-08-02 15:18 明王不动心 阅读(261) 评论(0) 推荐(0) 编辑
摘要: 1.python中变量是什么? 在数学概念中,变量表示没有固定值且可以改变的数值。在计算机系统中,变量表示一段或者多段用来存储数据的内存。变量名都是指代的一个指针。在GO语言里面,变量总是有固定的类型,变量类型决定了数据在内存中的长度存储格式。在python中,变量进行初始化的时候可以不指定类型,那 阅读全文
posted @ 2019-08-02 14:26 明王不动心 阅读(229) 评论(0) 推荐(0) 编辑
摘要: 一、鸭子类型和多态 多态:根据代码类型的具体实现来采取不同的行为。在go和python中,能够直接体现多态的是接口,最后都执行相同的函数却返回不同的结果。在python是没有接口类这种类型的,只是为了更好的规范代码而人为定义的,但是这并不影响多态特性的体现。但是go和python中实现多态的过程却完 阅读全文
posted @ 2019-08-02 14:19 明王不动心 阅读(227) 评论(0) 推荐(0) 编辑