首页 > 系统相关 >Python并发执行的简易实现:多进程、多线程、协程

Python并发执行的简易实现:多进程、多线程、协程

时间:2023-02-06 11:05:08浏览次数:48  
标签:__ 协程 get Python item logging import sem 多线程


多进程

import logging
import time
from multiprocessing import Pool
logging.basicConfig(format='%(asctime)s %(message)s', level=logging.INFO)

def f(x):
time.sleep(1)
logging.info(x)
return x


if __name__ == '__main__':
with Pool(5) as p:
p.map(f, [i for i in range(1, 100)])

多线程

import logging
import time
import threading
import queue

logging.basicConfig(format='%(asctime)s %(message)s', level=logging.INFO)

q = queue.Queue()


def worker():
while True:
item = q.get()
time.sleep(1)
logging.info(item)
q.task_done()


# 启动线程数.
for i in range(3):
threading.Thread(target=worker, daemon=True).start()


# Send thirty task requests to the worker.
for item in range(30):
q.put(item)

# Block until all tasks are done.
q.join()
print('All work completed')

协程

import asyncio

def get_urls():
return ['http://xxx.com', 'http://xxx.com']


async def get_title(url, sem):
async with sem:
time.sleep(2)
print(url)


if __name__ == '__main__':
loop = asyncio.get_event_loop()
# 任务列表,列表里是coroutine或future
tasks = []
# 限制协程数量
sem = asyncio.Semaphore(2)
urls = get_urls()
for url in urls:
tasks.append(get_title(url, sem))
try:
loop.run_until_complete(asyncio.wait(tasks))
finally:
loop.close()

参考

​多进程​​​​多线程​​​​协程​


标签:__,协程,get,Python,item,logging,import,sem,多线程
From: https://blog.51cto.com/lilongsy/6038739

相关文章

  • 几行Python代码自动清理电脑重复文件
    随着互联网不断的发展,众多有技术的企业都已经转入人工智能的领域,我们知道人工智能首先就是需要会python编程,因此,如果能学好Python不仅仅只限于人工智能行业,能从事的行业还很......
  • 几行Python代码自动清理电脑重复文件
    随着互联网不断的发展,众多有技术的企业都已经转入人工智能的领域,我们知道人工智能首先就是需要会python编程,因此,如果能学好Python不仅仅只限于人工智能行业,能从事的行业还......
  • Python3排序sorted(key=lambda)
    Python3排序sorted(key=lambda)简述:假如d是一个由元组构成的列表,我们需要用到参数key,也就是关键词,看下面这句命令,lambda是一个隐函数,是固定写法,不要写成别的单词;x表示列......
  • python装饰器拦截方法执行
    importtimedeflog(delay=0):defdecorator(func):defwrapper(*args,**kwargs):"""我是wrapper的注释"""time1=time.......
  • python创建一个全为1的数据文件
    linux下创建一个全为1的数据文件touchm.pyimportstructcnt=128data=[0xFF]withopen('data','wb+')asfp:whilecnt>0:a=struct.pack(......
  • Python(12)--元组
    一、元组的基本介绍元组(tuple):这种数据类型结构与列表相同,但它与列表也有很大的差异,它的元素值与元素个数不可更改。列表的定义是将元素放入[]中,元组的定义是将元素放入()中......
  • Pycharm 为 python 文件添加工程说明
    当我们希望在python项目文件中添加作者/项目信息说明时,可以借助pycharm自动的配置代码模版的方式来实现。1进入setting2配置信息模版将下面的模版代码填入即可......
  • python基础:split、join、replace、remove、del、pop、index小记
    这里总结了平时写脚本时经常用到的一些基础方法,做个记录1、split()函数可以基于分隔符将字符串分割成由若干子串组成的列表str.split(str="",num=string.count(str))......
  • python下载慢
    1,Python官方网址https://www.python.org/downloads/2,选择国内镜像源,如阿里的。https://registry.npmmirror.com/binary.html?path=python/ ......
  • Python 内置界面开发框架 Tkinter入门篇 丙(文末有福利彩蛋,今天可是元宵节)
    以下内容为本人的学习笔记,如需要转载,请声明原文链接微信公众号「ENG八戒」https://mp.weixin.qq.com/s/B1hH5Qzd2RkAiiUId1tLWw本文大概2874个字,阅读需花10分钟内容......