![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
python
semicolon_helloword
这个作者很懒,什么都没留下…
展开
-
python3中使用共享内存
在Python3中,共享内存主要用于多进程间高效的数据共享。Python标准库中的multiprocessing模块提供了两种方式实现共享内存:Value和Array,它们允许不同进程访问同一块内存区域。注意,直接使用shared_memory模块时,通常需要自己处理数据类型转换和同步问题。原创 2024-02-29 09:28:51 · 664 阅读 · 0 评论 -
python中线程同步机制 lock
当多个线程尝试访问共享资源(这里是变量shared_resource)时,每个线程都会先调用lock.acquire()来获取锁。在try/finally块中确保无论发生什么情况,最后都会通过lock.release()释放锁,以保证其他线程能够继续访问共享资源。在这个例子中,生产者通过not_full条件变量等待队列不满,然后添加产品到队列,并唤醒等待的消费者。消费者则通过not_empty条件变量等待队列非空,然后从队列中取出并消费产品,并唤醒等待的生产者。原创 2024-02-27 08:55:13 · 935 阅读 · 0 评论 -
python 装饰器(-)
当我们将 add 函数赋值给 add = log_decorator(add) 时,实际上是对 add 函数进行了装饰,即替换了原来的函数引用为经过装饰后的新函数。在Python中,装饰器模式是一种设计模式,它通过包装函数或类来扩展其功能,而不需要修改原始函数或类的代码。在装饰器内部定义了一个新的函数 wrapper,这个函数包含了我们想要添加到原函数前后执行的额外逻辑,如打印日志信息。log_decorator 是一个装饰器函数,它接收一个函数作为参数(这里是 add 函数)。原创 2024-02-25 09:35:47 · 344 阅读 · 0 评论 -
Python中Thread 类使用说明
然而,在实际应用中,需要注意由于全局解释器锁(GIL)的存在,Python的多线程并不能充分利用多核CPU的优势进行计算密集型任务的并行处理,但对于IO密集型任务或频繁切换的任务来说,多线程仍然可以提升程序性能。同时,在多线程环境下,需要考虑线程安全问题,可能需要使用线程同步机制如锁(Lock)、条件变量(Condition)、信号量(Semaphore)等来保护共享资源的访问。在Python中,threading.Thread 类是用于创建和管理线程的核心类。原创 2024-02-27 08:50:15 · 384 阅读 · 0 评论 -
python中的迭代器的使用
在Python中,迭代器(Iterator)是一个特殊对象,它实现了迭代协议,允许程序员遍历集合元素而无需暴露其底层表示。例如,列表、元组、字符串、字典、集合以及自定义类(如果它们实现了迭代器协议)都是可迭代的。每次对__next__()方法的调用都会返回下一个数,并且当达到或超过max_value时,会触发StopIteration异常,这标志着迭代的结束。下面,我们实现一下自己的迭代器,该类需要实现__iter__()和__next__()两个特殊方法(魔法方法),以遵循Python的迭代器协议。原创 2024-03-01 09:28:07 · 600 阅读 · 0 评论 -
python 中 ftplib库的使用说明
在Python3中,ftplib库是用于处理FTP协议的内置模块。原创 2024-02-24 10:50:30 · 767 阅读 · 0 评论 -
python中的queue
在Python3中,队列是一种非常重要的数据结构,尤其在多线程和多进程编程中,用于实现生产者消费者模式等并发场景。下面通过一个简单的例子来展示如何在Python3中使用queue模块创建和操作队列。这样就演示了如何在Python3中利用队列进行线程间的同步与通信。原创 2024-02-29 09:05:48 · 429 阅读 · 0 评论 -
python中信号量(Semaphore)
在Python中,信号量(Semaphore)主要用来控制多个线程或进程对共享资源的访问。信号量本质上是一种计数器,它维护一个许可(permit)数量,每次 acquire() 函数被调用时,如果还有剩余的许可,则减少一个,并允许执行;如果没有剩余许可,则阻塞当前线程直到其他线程释放信号量。在这个例子中,我们创建了一个最多允许3个线程同时执行的信号量。当超过3个线程尝试进入临界区时,其余线程将等待信号量被释放。每个成功获取信号量的线程在完成其工作后会释放信号量,以便其他等待的线程能够继续执行。原创 2024-02-28 16:45:54 · 802 阅读 · 0 评论 -
python 中 paramiko库使用说明
paramiko 是一个 Python 库,它实现了 SSHv2 协议,允许用户在 Python 程序中执行远程命令、传输文件以及与支持 SSH 的服务器进行安全的交互。原创 2024-02-24 10:40:23 · 728 阅读 · 0 评论 -
python中的dict类型
... 其他类似的方法,例如 `keys()`, `values()`, `clear()`, 等等 ...# 使用自定义字典类print(my_dict["a"]) # 输出:1print(my_dict.get("c")) # 输出:3。原创 2024-03-01 09:55:49 · 566 阅读 · 0 评论 -
手写myscrapy(六)
手写myscrapy代码实例,好简单啊原创 2024-02-25 09:24:47 · 493 阅读 · 0 评论 -
手写myscrapy(八)
【代码】手写myscrapy(八)原创 2024-02-26 17:03:00 · 995 阅读 · 0 评论 -
手写myscrapy(七)
logging.conf 是python的logging库 的配置文件,本项目也是使用logging库来实现日志记录。在config下的logging.conf 文件和setting.py 文件。setting.py 文件就是爬取类的配置了。这里参数都给出了说明,可以根据需要进行修改。原创 2024-02-26 16:55:07 · 415 阅读 · 0 评论 -
手写myscrapy(四)
这里主要实现了 使用xpath 方式 定位和获取dom节点的方法实现,get,getalll方法获取element的节点文本内容。书接上文吧,我们继续来讲解,我们还需要封装一个类,来操作解析后的dom节点元素,我们把这个类命名为 mynode吧。原创 2024-02-22 08:51:29 · 310 阅读 · 0 评论 -
手写myscrapy(五)
xpath()方法解析返回的html格式的内容,使用etree转换成MyNode对象。json() 方法解析返回的json格式内容,转换为 python 的json对象。get_xpath_node() : 获取节点下(包括子节点)的文本内容。get_xpath_text(): 获取节点下的文本内容。我们继续完成返回的处理类 MyResponse的实现。follow() 方法解析需要继续访问的url;原创 2024-02-22 09:07:28 · 776 阅读 · 0 评论 -
手写myscrapy(二)
Scrapy采用模块化设计,将整个系统划分为多个独立的模块,包括引擎(Engine)、调度器(Scheduler)、下载器(Downloader)、爬虫(Spider)、项目管道(Item Pipeline)等。这些中间件可以插入到Scrapy的数据流中,对请求和响应进行预处理和后处理,从而实现对爬虫功能的扩展和定制。Scrapy通过引擎(Engine)来控制数据流在系统中的流动。scrapy设计的还是很牛的,但是这么强大的工具,我们学习和使用都需要一定的成本,我们还是写一个简单,易学易用的scrapy;原创 2024-02-18 10:24:46 · 642 阅读 · 0 评论 -
手写myscrapy(一)
我们先使用这个框架演示一下如何爬取。charset=utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"><meta content="always" name="referrer"><meta name="theme-color" content="#ffffff"><meta name="description" content="全球领先的中文搜索引擎、致力于让网民更便捷地获取信息,找到所求。原创 2024-02-05 10:16:39 · 317 阅读 · 0 评论 -
手写myscrapy(三)
我们先定义一个接口类 名称:MyObject 主要定义需要实现的方法定义。接下来实现一下myrequest 类 主要实现 http的请求。我们现在具体讲解一下主要功能的实现。原创 2024-02-18 10:34:10 · 372 阅读 · 0 评论 -
手写自己的scrapy
在工作之余,手写自己的scrapy原创 2023-12-16 09:54:37 · 1023 阅读 · 1 评论 -
使用python-mmap快速复制文件
最近学习python系统编程,学习到mmap:内存映射(mmap)文件对象的行为既像bytearray 又像文件对象。你可以在大部分接受bytearray 的地 方使用mmap对象;例如,你可以使用re 模块来搜索一个内存映射文件。你也可以通过执行 obj[index] = 97 来修改单个字节,或者通过对切片赋值来修改一个子序列: obj[i1:i2] = b'...'。你还可以在文 件的当前位置开始读取和写入数据,并使用 seek() 前往另一个位置。mmap对象对文件操作应该非常快,所以写了.原创 2020-07-25 07:51:28 · 291 阅读 · 0 评论