![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Python
文章平均质量分 72
chuntian_tester
路漫漫其修远兮,吾将上下而求索。
展开
-
APScheduler任务调度框架
APScheduler的全称是Advanced Python Scheduler,它是一个轻量级的 Python 定时任务调度框架,APScheduler 支持三种调度任务:固定时间间隔,固定时间点(日期),Linux 下的 Crontab 命令;同时,它还支持异步执行、后台执行调度任务。原创 2023-03-15 03:30:00 · 1651 阅读 · 0 评论 -
Celery 异步框架执行定时任务
celery是python的一个异步框架,使用如下:原创 2022-08-31 23:59:49 · 550 阅读 · 0 评论 -
Python多进程+多线程+协程同时应用
"""10000个请求,开启2个进程,进程中开启3个线程,线程中开启5个协程来处理"""import requests, timefrom multiprocessing import Queue, Processimport threadingimport geventdef process_work(q, p_name): """ 创建3个线程 :param q: 队列 :param pname: 进程名 :return: """ .原创 2022-02-08 15:09:08 · 5096 阅读 · 3 评论 -
python中yield,greenlet,gevent实现协程
一.什么是协程: 协程是python中另外一种实现多任务的方式,只不过比线程更小,占用的执行资源(理解为需要的资源)也更少。为啥说他说一个执行单元?因为他自带cpu上下文,这样,在合适的额gr时机,我们就可以把一个协程切换到另一个协程。只要这个过程中保存或恢复了cpu上下文,那么程序就还是可以运行的。二.协程与线程的差异: 在实现多任务时,线程的切换远不止系统层面上的保存和恢复cpu上下文那么简单。操作系统为了程序运行的高效性,每个线程都有自己的缓存cache等数据,......原创 2022-02-07 21:40:08 · 648 阅读 · 0 评论 -
多线程,多进程以及协程的对比
1.多线程:10000个任务,3个线程耗时:9.669秒"""多线程与多进程的速度对比: 比较10000个任务,分别使用3个线程与3个进程来完成,比较哪种方式更快。"""import requests"1.多线程"import threading, time, os, queue# 线程的队列(只能在一个进程中使用,解决多线程之间的通信问题)q1 = queue.Queue()for i in range(10000): q1.put("http://127.0.0原创 2022-02-07 18:31:43 · 2150 阅读 · 0 评论 -
进程池Pool结合Manager中的Queue队列的使用
进程池Pool: 当需要创建的子进程数量不多时,可以直接利用multiprocessing中的Process动态生成多个进程,但如果是成百上千的进程目标,手动创建的工作量将非常巨大,此时可用到multiprocessing模块中的Pool类。 初始化Pool时,可以指定一个最大进程数,当有新的请求提交到Pool中时,如果进程池还没有满,那么就会创建一个新的进程用来执行该请求;如果池中的进程数已经达到指定的最大值,那么该请求就会等待,知道池中有进程结束,才会用之前结束的进程......原创 2022-02-07 14:44:12 · 3485 阅读 · 0 评论 -
多进程使用multiprocessing.Process及进程专用的Queue
multiprocessing模块:是一个跨平台跨版本的多进程模块,提供了一个Process类来代表一个进程对象,这个对象可以理解为是一个独立的进程,可以执行另外的事情。Process([group[,target[,name[,args[,kwargs]]]]])target: 如果传递了函数的引用,子进程就会执行这个函数的代码args: 给target指定的函数传递的参数,以元组的方式传递kwargs......原创 2022-02-02 16:39:13 · 2402 阅读 · 0 评论 -
多线程threading.Thread+队列queue实现生产者消费者
Python的Queue模块提供了同步的,线程安全的队列类,包括:FIFO队列Queue,LIFO队列LifeQueue,优先级队列PriorityQueue,这些队列都实现了锁原语,能在多线程中直接使用,可以使用队列来实现线程间的同步。初始化Queue()对象时(如:q=Queue()),若括号中没有指定最大可接收的消息数量,或数量为负数,那么就代表可接收的消息数量没有上限。队列的方法:(三种队列适用) def task_done(self)......原创 2022-01-28 21:37:12 · 2747 阅读 · 0 评论 -
time,csv模块使用
import timetimestamp = time.time()time_array=time.localtime(timestamp)othertime=time.strftime("%Y/%m/%d %H:%M:%S",time_array)print(othertime)print(time_array)print(timestamp)print(int(timestamp))输出:2022/01/27 16:19:22time.struct_time(tm_year=2.原创 2022-02-09 13:50:34 · 365 阅读 · 0 评论 -
并发和并行以及线程安全
并发:指的是任务数>CPU核数,通过操作系统的各种任务调度算法,实现多个任务"一起执行"(实际上总有些任务不在执行,因为CPU切换任务的速度非常快,看上去在一起执行而已).并发针对的是同一段时间内,有多个任务数在运行,强调同一段时间范围.并行:指的是任务数≤CPU核数,即任务真的在一起执行.并行针对的同一时刻有多个任务数在运行,强调的是同一时刻.并发与并行在CPU层面的表现:同步和异步同步:是指线程在访问某一资源时,获得了资源的返回结果之后才会执行其他操作(强调.....原创 2022-01-27 23:21:05 · 3111 阅读 · 0 评论