摘要:
code from django.db import models import django.utils.timezone as timezone class Doc(models.Model): add_date = models.DateTimeField('保存日期',default = t 阅读全文
posted @ 2020-12-26 23:16
anobscureretreat
阅读(117)
评论(0)
推荐(0)
摘要:
Code1 <form class="bs-example bs-example-form" role="form"> <!-- <div class="input-group"> <div class="input-group-btn"> <button id="dLabel" type="but 阅读全文
posted @ 2020-12-26 19:51
anobscureretreat
阅读(502)
评论(0)
推荐(0)
摘要:
字典类型一、字典(dict)作用用来存取多个值,按照key:value的方式存值,取的时候可以通过key而非索引去取值,key对value具有描述性的作用。存放数据的种类各种各样并且数据较多的时候可以使用字典。定义在{}内用逗号分隔开多个元素,每一个元素都是key: value的格式,其中value 阅读全文
posted @ 2020-12-26 19:44
anobscureretreat
阅读(335)
评论(0)
推荐(0)
摘要:
数据类型分类一、按存值个数存一个值:整型/浮点型/字符串存多个值:列表/字典/元组/集合存值个数数据类型单个值数字,字符串多个值(容器)列表,元组,字典,集合二、按有序or无序有序:字符串/列表/元组无序:字典/集合有序or无序数据类型有序(可按索引取值)字符串,列表,元组不可变字典,集合三、按可变 阅读全文
posted @ 2020-12-26 19:37
anobscureretreat
阅读(285)
评论(0)
推荐(0)
摘要:
格式化输出的三种方式一、占位符在编写程序的时候经常的会有:要求用户输入信息,然后打印成固定的格式这个时候就需要用到占位符如:%s(针对所有数据类型)、%d(仅仅针对数字类型)name = 'lh'age = 19print('my name is %s my age is %s' % (name, 阅读全文
posted @ 2020-12-26 19:32
anobscureretreat
阅读(1072)
评论(0)
推荐(0)
摘要:
一、什么是编程语言 Python和中文、英语语一样,都是一门语言,只要是语言,其实就可以看成是一种事物与另外一种事物沟通的介质。Python属于编程语言,编程语言是程序猿和计算机之间沟通的介质;中文和英语则是人与人之间沟通的介质。 二、什么编程 编程指的是:程序猿基于某种编程语言的语法格式将自己脑子 阅读全文
posted @ 2020-12-26 19:30
anobscureretreat
阅读(164)
评论(0)
推荐(0)
摘要:
Python深浅拷贝一、引言在python中,对象赋值实际上是对象的引用。当创建一个对象,然后把它赋给另一个变量的时候,python并没有拷贝这个对象,而只是拷贝了这个对象的引用针对该列表l1=['a','b','c',['d','e','f']]一般有三种方法,分别为:拷贝(赋值)、浅拷贝、深拷贝 阅读全文
posted @ 2020-12-26 19:28
anobscureretreat
阅读(110)
评论(0)
推荐(0)
摘要:
计算机分为五大组成部分,分别为:控制器、运算器、存储器、输入设备和输出设备。其中控制器+运算器是计算机的中央处理器(CPU),相当于人类的大脑。 一、控制器 计算机的指挥系统。大脑指挥全身的器官运作,但是大脑不会随意的指挥身体行动,大脑只有在接受指令后才会控制身体行动(如果你患有急性注意缺陷多动障碍 阅读全文
posted @ 2020-12-26 19:23
anobscureretreat
阅读(166)
评论(0)
推荐(0)
摘要:
阅读全文
posted @ 2020-12-26 19:21
anobscureretreat
阅读(70)
评论(0)
推荐(0)
摘要:
前段时间,自己弄了一个爬取豆瓣top250程序,爬去网页,清楚数据这些都正常,但是到数据库操作的时候出现的了sqlite3.OperationalError的错误提示以下是截图,不过对结果没有影响,我要的结果还是正常输出了,基于对这个错误的好奇,我下定决心把他整清楚: 然后换了种数据库操作方法: 还 阅读全文
posted @ 2020-12-26 19:20
anobscureretreat
阅读(885)
评论(0)
推荐(0)
摘要:
目录 字符串类型内置方法 1. 作用 2. 定义方式 3.内置方法 4.存一个值还是多个值 5. 有序or无序 有序:有索引;无序:无索引 6. 可变or不可变(重点) 1. 作用 姓名/性别/ 2. 定义方式 使用''、""、''''''、""""""包裹的的一串字符 s = 'sdfklsdjf 阅读全文
posted @ 2020-12-26 19:18
anobscureretreat
阅读(84)
评论(0)
推荐(0)
摘要:
可能有很多同学都有碰到下面我说的这个场景,当我们花了8888大洋买了一台16G内存的专业吃鸡电脑时,打开电脑发现自己的电脑内存只有15G不到,然后就开始了吃鸡之旅。 但是如果你对你少掉的内存关心的话,你会发现并不是厂商为了节省造价成本,而这少掉的内存被某种东西给占用了,这种东西就是我们这篇文章的主角 阅读全文
posted @ 2020-12-26 19:16
anobscureretreat
阅读(86)
评论(0)
推荐(0)
摘要:
只要是谈到计算机基础,有一个东西是我们无法避免的,那就是编程到底是什么?我只放图,其他的你们自己YY。 现在来想象这样一个场景,如果奴隶来自不同的国家,作为尊贵而又穷逼买不起管家的奴隶主的我们,如果需要控制奴隶,则需要和奴隶有一定的沟通才能控制努力。 如果把奴隶换成计算机,由于计算机以二进制的形式存 阅读全文
posted @ 2020-12-26 19:14
anobscureretreat
阅读(148)
评论(0)
推荐(0)
摘要:
我们重心可以放在高级语言上面,但是高级语言中的编译型语言和汇编型语言两者是互相矛盾的。这个时候对于不同的问题我们就应该有不同的策略,如果我们需要开发一个类似于操作系统这样要求执行速度并且开发周期长的系统,我们可以考虑使用编译型语言;如果我们需要开发一个跳一跳这样的娱乐软件,需要快速开发,我们可以考虑 阅读全文
posted @ 2020-12-26 19:12
anobscureretreat
阅读(112)
评论(0)
推荐(0)
摘要:
一、变量存在哪了? x = 10 当我们在p1.py中定义一个变量x = 10,那么计算机把这个变量值10存放在哪里呢了?我们回顾计算机的三大核心组件为:CPU、内存和硬盘。一定不是CPU,那是存放在内存还是硬盘中了呢?我们再回顾变量运行的三个过程,如果我们没有使用python解释器运行p1.py这 阅读全文
posted @ 2020-12-26 19:08
anobscureretreat
阅读(133)
评论(0)
推荐(0)
摘要:
一、什么是变量 变量从字面意思可以理解成:是变化的量。但是这样理解和没有理解貌似没有什么区别,我们把变量两个字拆分看看。 我们首先来想想看你是怎么认识我的,今天来你会认识我,明天来你还会认识我。那你是不是记住我这个人的典型特征,比如我的名字Nick、体重140、身高180…世间万物我们是不是都是这样 阅读全文
posted @ 2020-12-26 19:06
anobscureretreat
阅读(161)
评论(0)
推荐(0)
摘要:
code1 from concurrent.futures import ThreadPoolExecutor,ProcessPoolExecutor from threading import currentThread from multiprocessing import current_pr 阅读全文
posted @ 2020-12-26 18:57
anobscureretreat
阅读(147)
评论(0)
推荐(0)
摘要:
展望未来,基于消息传递的并发编程是大势所趋 即便是使用线程,推荐做法也是将程序设计为大量独立的线程集合,通过消息队列交换数据。 这样极大地减少了对使用锁定和其他同步手段的需求,还可以扩展到分布式系统中。 但进程间应该尽量避免通信,即便需要通信,也应该选择进程安全的工具来避免加锁带来的问题。 以后我们 阅读全文
posted @ 2020-12-26 18:48
anobscureretreat
阅读(150)
评论(0)
推荐(0)
摘要:
code from multiprocessing import Process,Queue import time,random,os def consumer(q): while True: res=q.get() if res is None:break #收到结束信号则结束 time.sle 阅读全文
posted @ 2020-12-26 18:37
anobscureretreat
阅读(95)
评论(0)
推荐(0)
摘要:
当需要创建的子进程数量不多时,可以直接利用multiprocessing中的Process动态成生多个进程,但如果是上百甚至上千个目标,手动的去创建进程的工作量巨大,此时就可以用到multiprocessing模块提供的Pool方法。 初始化Pool时,可以指定一个最大进程数,当有新的请求提交到Po 阅读全文
posted @ 2020-12-26 18:11
anobscureretreat
阅读(480)
评论(0)
推荐(0)
摘要:
code from concurrent.futures import ThreadPoolExecutor,ProcessPoolExecutor from threading import currentThread from multiprocessing import current_pro 阅读全文
posted @ 2020-12-26 18:07
anobscureretreat
阅读(111)
评论(0)
推荐(0)
摘要:
先进先出 code import queue q=queue.Queue() q.put('first') q.put('second') q.put('third') print(q.get()) print(q.get()) print(q.get()) outputs macname@Macd 阅读全文
posted @ 2020-12-26 18:05
anobscureretreat
阅读(154)
评论(0)
推荐(0)
摘要:
无论是进程还是线程,都遵循:守护XX会等待主XX运行完毕后销毁。 需要强调的是:运行完毕并非终止运行。 对主进程来说,运行完毕指的是主进程代码运行完毕 对主线程来说,运行完毕指的是主线程所在的进程内所有非守护线程统统运行完毕,主线程才算运行完毕。 1.1详细解释 主进程在其代码结束后就已经算运行完毕 阅读全文
posted @ 2020-12-26 17:53
anobscureretreat
阅读(122)
评论(0)
推荐(0)
摘要:
同步 import os,time from multiprocessing import Pool def work(n): print('%s run' %os.getpid()) time.sleep(3) return n**2 if __name__ == '__main__': p=Po 阅读全文
posted @ 2020-12-26 17:47
anobscureretreat
阅读(91)
评论(0)
推荐(0)
摘要:
server #Pool内的进程数默认是cpu核数,假设为4(查看方法os.cpu_count()) #开启6个客户端,会发现2个客户端处于等待状态 #在每个进程内查看pid,会发现pid使用为4个,即多个客户端公用4个进程 from socket import * from multiproces 阅读全文
posted @ 2020-12-26 17:44
anobscureretreat
阅读(95)
评论(0)
推荐(0)
摘要:
code from multiprocessing import Pool import requests import json import os def get_page(url): print('<进程%s> get %s' %(os.getpid(),url)) respone=reque 阅读全文
posted @ 2020-12-26 17:41
anobscureretreat
阅读(120)
评论(0)
推荐(0)
摘要:
code from concurrent.futures import ThreadPoolExecutor,ProcessPoolExecutor from threading import currentThread from multiprocessing import current_pro 阅读全文
posted @ 2020-12-26 17:38
anobscureretreat
阅读(322)
评论(0)
推荐(0)
摘要:
code from threading import Thread import time def sayhi(name): time.sleep(2) print('%s say hello' % name) if __name__ == '__main__': t = Thread(target 阅读全文
posted @ 2020-12-26 17:37
anobscureretreat
阅读(71)
评论(0)
推荐(0)
摘要:
server import multiprocessing import threading import socket s=socket.socket(socket.AF_INET,socket.SOCK_STREAM) s.bind(('127.0.0.1',8080)) s.listen(5) 阅读全文
posted @ 2020-12-26 17:28
anobscureretreat
阅读(146)
评论(0)
推荐(0)
摘要:
code import re from urllib.request import urlopen from multiprocessing import Pool def get_page(url,pattern): response=urlopen(url).read().decode('utf 阅读全文
posted @ 2020-12-26 17:24
anobscureretreat
阅读(83)
评论(0)
推荐(0)
摘要:
code from threading import Thread import threading from multiprocessing import Process import os def work(): import time time.sleep(3) print("thread s 阅读全文
posted @ 2020-12-26 17:22
anobscureretreat
阅读(75)
评论(0)
推荐(0)
摘要:
code from multiprocessing import Pool import time,random,os def work(n): time.sleep(1) return n**2 if __name__ == '__main__': p=Pool() res_l=[] for i 阅读全文
posted @ 2020-12-26 17:20
anobscureretreat
阅读(277)
评论(0)
推荐(0)
摘要:
code from threading import Thread from multiprocessing import Process import os def work(): global n n = 0 if __name__ == '__main__': n=100 p=Process( 阅读全文
posted @ 2020-12-26 17:15
anobscureretreat
阅读(276)
评论(0)
推荐(0)
摘要:
线程与进程的区别可以归纳为以下4点: 1.地址空间和其他资源(如打开文件):进程间相互独立,统一进程的个线程间共享。某进程内的线程在其他进程不可见。 2.通信:进程间通信IPC,线程间可以直接读写进程数据段(如全局变量)来进行通信—需要进程同步和互斥手段的辅助,以保证数据的一致性。 3.调度和切换: 阅读全文
posted @ 2020-12-26 17:08
anobscureretreat
阅读(129)
评论(0)
推荐(0)
摘要:
开启一个字处理软件进程,该进程肯定需要办不止一件事情,比如监听键盘输入,处理文字,定时自动将文字保存到硬盘,这三个任务操作的都是同一块数据,因而不能用多进程。只能在一个进程里并发地开启三个线程,如果是单线程,那就只能是,键盘输入时,不能处理文字和自动保存,自动保存时又不能输入和处理文字 阅读全文
posted @ 2020-12-26 17:07
anobscureretreat
阅读(92)
评论(0)
推荐(0)
摘要:
code from threading import Thread from multiprocessing import Process import os def work(name): print('{}的pid是'.format(name), os.getpid()) if __name__ 阅读全文
posted @ 2020-12-26 17:04
anobscureretreat
阅读(236)
评论(0)
推荐(0)
摘要:
多个线程共享同一个进程的地址空间中的资源,是对一台计算机上多个进程的模拟,有时也称线程为轻量级的进程。 而对一台计算机上多个进程,则共享物理内存、磁盘、打印机等其他物理资源。多线程的运行与多进程的运行类似,是CPU在多个线程之间的快速切换。 不同的进程之间是充满敌意的,彼此是抢占、竞争CPU的关系, 阅读全文
posted @ 2020-12-26 17:02
anobscureretreat
阅读(161)
评论(0)
推荐(0)
摘要:
Python提供两个模块进行多线程的操作,分别是thread和threading, 前者是比较低级的模块,用于更底层的操作,一般应用级别的开发不常用。 方法1:直接使用threading.Thread() import threading # 这个函数名可随便定义 def run(n): print 阅读全文
posted @ 2020-12-26 16:55
anobscureretreat
阅读(144)
评论(0)
推荐(0)
摘要:
code import time import random from multiprocessing import Pool, Manager # 生产者 def producer(q, i): food = 'Spam-%d' % i time.sleep(random.uniform(1, 2 阅读全文
posted @ 2020-12-26 16:49
anobscureretreat
阅读(128)
评论(0)
推荐(0)
摘要:
code import time import random from multiprocessing import Process, Queue # 生产者 def producer(q, i): food = 'Spam-%d' % i time.sleep(random.uniform(2, 阅读全文
posted @ 2020-12-26 16:45
anobscureretreat
阅读(227)
评论(0)
推荐(0)
摘要:
code import time import random from multiprocessing import Queue # 生产者 def producer(q, num): for i in range(1, num + 1): food = 'Spam-%d' % i # time.s 阅读全文
posted @ 2020-12-26 16:40
anobscureretreat
阅读(89)
评论(0)
推荐(0)
摘要:
GIL本质就是一把互斥锁,既然是互斥锁,所有互斥锁的本质都一样,都是将并发运行变成串行,以此来控制同一时间内共享数据只能被一个任务所修改,进而保证数据安全。 # 为何要有GIL? 因为Cpython解释器自带垃圾回收机制不是线程安全的。 # 如果不对垃圾回收机制线程做任何处理,也没有GIL锁行不行? 阅读全文
posted @ 2020-12-26 16:37
anobscureretreat
阅读(126)
评论(0)
推荐(0)
摘要:
#主进程等 >p1,p2,p3等 >c1,c2 #p1,p2,p3结束了, 证明c1,c2肯定全都收完了p1,p2,p3发到队列的数据 #因而c1,c2也没有存在的价值了,不需要继续阻塞在进程中影响主进程了。应该随着主进程的结束而结束,所以设置成守护进程就可以了 code from multipro 阅读全文
posted @ 2020-12-26 16:34
anobscureretreat
阅读(97)
评论(0)
推荐(0)
摘要:
Sikuli脚本自动化,你在屏幕上看到的任何东西。它使用图像识别,识别和控制GUI组件。这是有用的,当有一个GUI的内部或源代码的访问是不容易的。 Sikuli(在墨西哥维乔印第安人的语言里是”上帝之眼”的意思)是由美国麻省理工学院开发的一种最新编程技术,使得编程人员可以使用截图替代代码,从而简化代 阅读全文
posted @ 2020-12-26 16:32
anobscureretreat
阅读(373)
评论(0)
推荐(0)
摘要:
之前我们学习了线程、进程的概念,了解了在操作系统中进程是资源分配的最小单位,线程是CPU调度的最小单位。按道理来说我们已经算是把CPU的利用率提高很多了。但是我们知道无论是创建多进程还是创建多线程来解决问题,都要消耗一定的时间来创建进程、创建线程、以及管理他们之间的切换。 随着我们对于效率的追求不断 阅读全文
posted @ 2020-12-26 16:28
anobscureretreat
阅读(110)
评论(0)
推荐(0)
摘要:
code import time def time_count(func): def wrapper(*args, **kwargs): start = time.time() res = func(*args, **kwargs) end = time.time() print(f'{func} 阅读全文
posted @ 2020-12-26 16:25
anobscureretreat
阅读(65)
评论(0)
推荐(0)
摘要:
进程就是正在执行的一个过程,进程是对正在运行程序的一个抽象。 进程的概念起源于操作系统,是操作系统最核心的概念,也是操作系统提供的最古老也是最重要的抽象概念之一。操作系统的其他所有内容都是围绕进程的概念展开的。 所以想要真正了解进程,必须事先了解操作系统。 PS:即使可以利用的cpu只有一个(早期的 阅读全文
posted @ 2020-12-26 16:21
anobscureretreat
阅读(82)
评论(0)
推荐(0)
摘要:
code from multiprocessing import Process,Queue import time,random,os def consumer(q,p1): while True: res=q.get() if(res=="finish"): break time.sleep(r 阅读全文
posted @ 2020-12-26 16:09
anobscureretreat
阅读(122)
评论(0)
推荐(0)
摘要:
并行:并行是指两者同时执行,比如赛跑,两个人都在不停的往前跑;(资源够用,比如三个线程,四核的CPU) 并发:并发是指资源有限的情况下,两者交替轮流使用资源,比如一段路(单核CPU资源)同时只能过一个人,A走一段后,让给B,B用完继续给A,交替使用,目的是提高效率。 并行:是从微观上,也就是在一个精 阅读全文
posted @ 2020-12-26 15:59
anobscureretreat
阅读(178)
评论(0)
推荐(0)
摘要:
code import os from multiprocessing import Process def f(x): print('子进程id :',os.getpid(),'父进程id :',os.getppid()) return x*x if __name__ == '__main__': 阅读全文
posted @ 2020-12-26 15:55
anobscureretreat
阅读(84)
评论(0)
推荐(0)
摘要:
多进程并行 code import time from multiprocessing import Process def f(name): print('hello', name) time.sleep(1) if __name__ == '__main__': p_lst = [] for i 阅读全文
posted @ 2020-12-26 15:52
anobscureretreat
阅读(139)
评论(0)
推荐(0)
摘要:
code import os from multiprocessing import Process class MyProcess(Process): def __init__(self,name): super().__init__() self.name=name def run(self): 阅读全文
posted @ 2020-12-26 15:42
anobscureretreat
阅读(79)
评论(0)
推荐(0)
摘要:
code # 由并发变成了串行,牺牲了运行效率,但避免了竞争 import os import time import random from multiprocessing import Process,Lock def work(lock,n): lock.acquire() print('%s 阅读全文
posted @ 2020-12-26 15:03
anobscureretreat
阅读(284)
评论(0)
推荐(0)
摘要:
在并发编程中使用生产者和消费者能够解决绝大多数并发问题。该模式通过平衡生产线程和消费线程的工作能力来提高程序的整体处理数据的速度。 4.1什么是生产者消费者模式 生产者消费者模式是通过一个容器来解决生产者和消费者的强耦合问题。生产者和消费者彼此之间不直接通讯,而通过阻塞队列来进行通讯,所以生产者生产 阅读全文
posted @ 2020-12-26 15:02
anobscureretreat
阅读(91)
评论(0)
推荐(0)
摘要:
code import os import time import multiprocessing # 向Queue中输入数据的函数 def input(queue): info = str(os.getpid()) + '(put):' + str(time.asctime()) queue.pu 阅读全文
posted @ 2020-12-26 14:56
anobscureretreat
阅读(224)
评论(0)
推荐(0)
摘要:
code # 文件db的内容为:{"count":1} # 注意一定要用双引号,不然json无法识别 # 并发运行,效率高,但竞争写同一文件,数据写入错乱 from multiprocessing import Process,Lock import time,json,random def sea 阅读全文
posted @ 2020-12-26 14:50
anobscureretreat
阅读(99)
评论(0)
推荐(0)
摘要:
code # 文件db的内容为:{"count":5} # 注意一定要用双引号,不然json无法识别 # 并发运行,效率高,但竞争写同一文件,数据写入错乱 from multiprocessing import Process,Lock import time,json,random def sea 阅读全文
posted @ 2020-12-26 14:45
anobscureretreat
阅读(118)
评论(0)
推荐(0)
摘要:
code import time from multiprocessing import Queue, Process def f(q): q.put([time.asctime(), 'from Eva', 'hello']) # 调用主函数中p进程传递过来的进程参数,puy函数为向队列中添加一条 阅读全文
posted @ 2020-12-26 14:42
anobscureretreat
阅读(151)
评论(0)
推荐(0)
摘要:
code ''' multiprocessing模块支持进程间通信的两种主要形式:管道和队列 都是基于消息传递实现的,但是队列接口 ''' from multiprocessing import Queue q=Queue(3) #put ,get ,put_nowait,get_nowait,fu 阅读全文
posted @ 2020-12-26 14:39
anobscureretreat
阅读(122)
评论(0)
推荐(0)
摘要:
* 函数对象:可以将定义在函数内的函数返回到全局使用,从而打破函数的层级限制。 * 名称空间与作用域:作用域关系在函数定义阶段时就已经固定死了。与调用位置无关,即在任意位置调用函数都需要跑到定义函数时找到作用域关系 def f1(): x = 1 def inner(): print(x) retu 阅读全文
posted @ 2020-12-26 14:37
anobscureretreat
阅读(81)
评论(0)
推荐(0)
摘要:
code # 不加锁:并发执行,速度快,数据不安全 from threading import current_thread, Thread, Lock import os, time n = 100 def task(): global n print('%s is running' % curr 阅读全文
posted @ 2020-12-26 14:30
anobscureretreat
阅读(102)
评论(0)
推荐(0)
摘要:
有的同学可能有疑问:既然加锁会让运行变成串行,那么我在start之后立即使用join,就不用加锁了啊,也是串行的效果啊 没错:在start之后立刻使用jion,肯定会将100个任务的执行变成串行,毫无疑问,最终n的结果也肯定是0,是安全的,但问题是 start后立即join:任务内的所有代码都是串行 阅读全文
posted @ 2020-12-26 14:26
anobscureretreat
阅读(94)
评论(0)
推荐(0)
摘要:
code # 不加锁:未加锁部分并发执行,加锁部分串行执行,速度慢,数据安全 from threading import current_thread, Thread, Lock import os, time n = 100 def task(): # 未加锁的代码并发运行 time.sleep( 阅读全文
posted @ 2020-12-26 14:21
anobscureretreat
阅读(130)
评论(0)
推荐(0)
摘要:
code import threading from threading import Thread from threading import Condition import time import random c = Condition() # 条件锁 itemNum = 0 item = 阅读全文
posted @ 2020-12-26 14:06
anobscureretreat
阅读(130)
评论(0)
推荐(0)
摘要:
code # python3.2版本之后才有的; from concurrent.futures import ThreadPoolExecutor import time def job(num): print("这是一个%s任务" %(num)) return "执行结果:%s" %(num) 阅读全文
posted @ 2020-12-26 13:53
anobscureretreat
阅读(79)
评论(0)
推荐(0)
摘要:
例2:生产者-消费者模型,用继承实现 什么是生产者-消费者模型? 某个模块专门负责生产+数据, 可以认为是工厂; 另外一个模块负责对生产的数据进行处理的, 可以认为是消费者. 在生产者和消费者之间加个缓冲区(队列queue实现), 可以认为是商店. 生产者 》缓冲区 》 消费者 优点: 1). 解耦 阅读全文
posted @ 2020-12-26 13:50
anobscureretreat
阅读(97)
评论(0)
推荐(0)
摘要:
server #-*- coding:utf-8 -*- """ __author__ = BlingBling 建立TCP的基本流程 ss = socket() # 创建服务器套接字 ss.bind() # 套接字与地址绑定 ss.listen() # 监听连接 inf_loop: # 服务器无限 阅读全文
posted @ 2020-12-26 13:48
anobscureretreat
阅读(319)
评论(0)
推荐(0)
摘要:
code res.sort(key=lambda fn: os.path.getmtime(os.path.join(folder_storage,fn["name"])),reverse = True) # 方法一 import os def listdir(path, list_name): " 阅读全文
posted @ 2020-12-26 13:46
anobscureretreat
阅读(425)
评论(0)
推荐(0)
摘要:
code import threading from queue import Queue import time def timeit(f): def wrapper(*args, **kwargs): start_time = time.time() res = f(*args, **kwarg 阅读全文
posted @ 2020-12-26 13:40
anobscureretreat
阅读(196)
评论(0)
推荐(0)
摘要:
python使用多线程, 不一定运行速度快,这里引入GIL(global interpreter lock) python解释器中任意时刻都只有一个线程在执行; GIL执行过程: 1). 设置一个GIL; 2). 切换线程去准备执行任务(Runnale就绪状态); 3). 运行; 4). 可能出现的 阅读全文
posted @ 2020-12-26 13:36
anobscureretreat
阅读(328)
评论(0)
推荐(0)
摘要:
code import multiprocessing def foo(i): print ('called function in process: %s' %i) return if __name__ == '__main__': Process_jobs = [] for i in range 阅读全文
posted @ 2020-12-26 13:35
anobscureretreat
阅读(111)
评论(0)
推荐(0)
摘要:
1.1进程 之前我们已经了解了操作系统中进程的概念,程序并不能单独运行,只有将程序装载到内存中,系统为它分配资源才能运行,而这种执行的程序就称之为进程。程序和进程的区别就在于:程序是指令的集合,它是进程运行的静态描述文本;进程是程序的一次执行活动,属于动态概念。在多道编程中,我们允许多个程序同时加载 阅读全文
posted @ 2020-12-26 13:31
anobscureretreat
阅读(70)
评论(0)
推荐(0)
摘要:
code from threading import Thread import os,time n=100 def work(): global n temp=n time.sleep(0.1) n=temp-1 l=[] for i in range(100): p=Thread(target= 阅读全文
posted @ 2020-12-26 13:17
anobscureretreat
阅读(129)
评论(0)
推荐(0)
摘要:
code import threading R=threading.Lock() R.acquire() ''' 对公共数据的操作 ''' R.release() 阅读全文
posted @ 2020-12-26 13:16
anobscureretreat
阅读(79)
评论(0)
推荐(0)
摘要:
所谓死锁:是指两个或两个以上的进程或线程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程,如下就是死锁 code from threading import Thread,Lock i 阅读全文
posted @ 2020-12-26 13:07
anobscureretreat
阅读(169)
评论(0)
推荐(0)
摘要:
同进程的一样 Semaphore管理一个内置的计数器, 每当调用acquire()时内置计数器-1; 调用release() 时内置计数器+1; 计数器不能小于0;当计数器为0时,acquire()将阻塞线程直到其他线程调用release()。 实例:(同时只有5个线程可以获得semaphore,即 阅读全文
posted @ 2020-12-26 13:00
anobscureretreat
阅读(152)
评论(0)
推荐(0)
摘要:
解决:典型死锁问题科学家吃面 code import time from threading import Thread, RLock fork_lock = noodle_lock = RLock() def eat1(name): noodle_lock.acquire() print('%s 阅读全文
posted @ 2020-12-26 12:52
anobscureretreat
阅读(97)
评论(0)
推荐(0)
摘要:
code import time from threading import Thread,Lock noodle_lock = Lock() fork_lock = Lock() def eat1(name): noodle_lock.acquire() print('%s 抢到了面条'%name 阅读全文
posted @ 2020-12-26 12:49
anobscureretreat
阅读(224)
评论(0)
推荐(0)
摘要:
安装 pip3 install gevent Gevent 是一个第三方库,可以轻松通过gevent实现并发同步或异步编程,在gevent中用到的主要模式是Greenlet, 它是以C扩展模块形式接入Python的轻量级协程。 Greenlet全部运行在主程序操作系统进程的内部,但它们被协作式地调度 阅读全文
posted @ 2020-12-26 12:45
anobscureretreat
阅读(550)
评论(0)
推荐(1)
摘要:
code import copy age = 19 print(f'first:{id(age)}') age = 20 print(f'second:{id(age)}') l1 = ['a', 'b', 'c', ['d', 'e', 'f']] l2 = l1 print("*"*25,"赋值 阅读全文
posted @ 2020-12-26 12:40
anobscureretreat
阅读(82)
评论(0)
推荐(0)
摘要:
安装 pip3 install pyinstaller 更改exe文件的图标 pyinstaller -F --icon=1234.ico run.py 打包成exe文件夹 pyinstaller run.py 打包成一个exe文件 pyinstaller -F run.py 阅读全文
posted @ 2020-12-26 12:38
anobscureretreat
阅读(89)
评论(0)
推荐(0)
摘要:
上一篇记录了关于文件夹下文件的遍历的程序实现,今天学习一下关于文件的复制、重命名、移动和删除的操作; 对于文件的操作,主要依赖OS模块和shutil模块; 下面直接以例子来说明关于文件的复制、重命名、移动和删除的操作:一、复制 1、文件的复制 import os import shutil shut 阅读全文
posted @ 2020-12-26 12:35
anobscureretreat
阅读(362)
评论(0)
推荐(0)
摘要:
urllib.request 返回的数据需要解码,如 网站返回的是GBK编码数据. 需要调用decode("gbk") 此时输出不会乱码. with urllib.request.urlopen(url, context=context) as response: html = response.r 阅读全文
posted @ 2020-12-26 12:28
anobscureretreat
阅读(479)
评论(0)
推荐(0)
摘要:
code from threading import Thread from multiprocessing import Process import os def work(name): print('{} say hello'.format(name)) if __name__ == '__m 阅读全文
posted @ 2020-12-26 12:04
anobscureretreat
阅读(76)
评论(0)
推荐(0)

浙公网安备 33010602011771号