Python各类并发模版
以后在写一些Python并发的时候参考下面这个模块,小西总结的挺全的,直接搬砖了。
进程并发
from multiprocessing import Pool, Manager
def func(d, results):
res = d + 1
print(res)
results.append(res)
if __name__ == "__main__":
num = 5
data = range(40)
print(data)
pool = Pool(processes=num)
manager = Manager()
results = manager.list()
jobs = []
for d in data:
job = pool.apply_async(func, (d, results))
jobs.append(job)
pool.close()
pool.join()
print(results)
from multiprocessing import Pool, Manager
def func(d, results):
res = d + 1
print(res)
results.append(res)
if __name__ == "__main__":
num = 5
data = range(40)
print(data)
pool = Pool(processes=num)
manager = Manager()
results = manager.list()
jobs = []
for d in data:
job = pool.apply_async(func, (d, results))
jobs.append(job)
pool.close()
pool.join()
print(results)
线程并发
from multiprocessing.pool import ThreadPool
def func(d):
res = d + 1
print(res)
return res
def ThreadPools():
num = 5
data = range(40)
print(data)
jobs = []
results = []
pool = ThreadPool(num)
for d in data:
job = pool.apply_async(func, (d,))
jobs.append(job)
pool.close()
pool.join()
for i in jobs:
results.append(i.get())
print(results)
if __name__ == '__main__':
ThreadPools()
协程并发
python3版本利用gevent库
import gevent
from gevent import monkey, pool; monkey.patch_all()
from gevent import Timeout
def func(d):
res = d + 1
print(res)
return res
def GeventPools():
num = 8
data = range(40)
print(data)
results = []
p = pool.Pool(num)
timer = Timeout(60 * 1200).start() # Execute up to 120 minutes per coroutine
jobs = []
for d in data:
job = p.spawn(func, d)
jobs.append(job)
try:
gevent.joinall(jobs) # wait all jobs done
except Timeout:
print("[-] Time out....")
except Exception as e:
print("[-] error:{}".format(e))
finally:
pass
for i in jobs:
results.append(i.get())
print(results)
if __name__=='__main__':
GeventPools()
python3版本利用asyncpool库
import asyncio
import asyncpool
import logging
import functools
def func(d):
res = d + 1
print(res)
return res
def asyncmul():
async def worker_coro(data, result_queue):
# print("Processing Value! -> {}".format(data))
results = await loop.run_in_executor(None, functools.partial(func, data))
await result_queue.put(results)
async def result_reader(queue):
while True:
value = await queue.get()
if value is None:
break
results.append(value)
# print("Got value! -> {}".format(value))
async def run():
result_queue = asyncio.Queue()
reader_future = asyncio.ensure_future(result_reader(result_queue), loop=loop)
# Start a worker pool with 10 coroutines, invokes `example_coro` and waits for it to complete or 5 minutes to pass.
async with asyncpool.AsyncPool(loop, num_workers=num, name="WorkerPool",
logger=logging.getLogger("WorkerPool"),
worker_co=worker_coro, max_task_time=5 * 60,
log_every_n=10) as pool:
for d in data:
await pool.push(d, result_queue)
await result_queue.put(None)
await reader_future
num = 8
data = range(40)
print(data)
results = []
loop = asyncio.get_event_loop()
loop.run_until_complete(run())
print(results)
asyncmul()
python常用正则:
import re
html='aa11bb22cc'
pattern=re.compile(r'aa(.+?)b')
print pattern.findall(html)
import re
html='aa11bb22cc'
print re.findall(r'aa(.+?)b',html)
requests的session会话对象来进行处理。会话对象让你能够跨请求保持某些参数。它也会在同一个 Session 实例发出的所有请求之间保持 cookie
import requests
def login():
'''登录接口:/auth/login'''
s=requests.Session()
r=s.post(
url='http://11X.39.63.XX:20080/auth/login',
data={'username':'system','password':'123456'})
return s
def selectable():
r=login().get(
url='http://11X.39.63.XX:20080/depot/parks/selectable')
print r.status_code
print r.text
selectable()
上传图片
import requests
upload_url="http://baidu.com"
header={"ct":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9"}
proxies={"http":"http://127.0.0.1:8082"}
files = {'file':('hh.jpg',open('hh.jpg','rb'),'image/jpeg')}
upload_data={"parentId":"","fileCategory":"personal","fileSize":179,"fileName":"summer_text_0920.txt","uoType":1}
upload_res=requests.post(url=upload_url,data=upload_data,files=files,headers=header,proxies=proxies)
进程+线程并发,进程+协程并发参考下面链接,先留个坑,以后用的时候遇到问题再来改
http://momomoxiaoxi.com/python/2019/03/12/python/
Python各类并发模版的更多相关文章
- Python多进程并发(multiprocessing)用法实例详解
http://www.jb51.net/article/67116.htm 本文实例讲述了Python多进程并发(multiprocessing)用法.分享给大家供大家参考.具体分析如下: 由于Pyt ...
- python多进程并发和多线程并发和协程
为什么需要并发编程? 如果程序中包含I/O操作,程序会有很高的延迟,CPU会处于等待状态,这样会浪费系统资源,浪费时间 1.Python的并发编程分为多进程并发和多线程并发 多进程并发:运行多个独立的 ...
- Python 3 并发编程多进程之进程同步(锁)
Python 3 并发编程多进程之进程同步(锁) 进程之间数据不共享,但是共享同一套文件系统,所以访问同一个文件,或同一个打印终端,是没有问题的,竞争带来的结果就是错乱,如何控制,就是加锁处理. 1. ...
- Python 3 并发编程多进程之守护进程
Python 3 并发编程多进程之守护进程 主进程创建守护进程 其一:守护进程会在主进程代码执行结束后就终止 其二:守护进程内无法再开启子进程,否则抛出异常:AssertionError: daemo ...
- Python 3 并发编程多进程之队列(推荐使用)
Python 3 并发编程多进程之队列(推荐使用) 进程彼此之间互相隔离,要实现进程间通信(IPC),multiprocessing模块支持两种形式:队列和管道,这两种方式都是使用消息传递的. 可以往 ...
- python实现并发服务器实现方式(多线程/多进程/select/epoll)
python实现并发服务器实现方式(多线程/多进程/select/epoll) 并发服务器开发 并发服务器开发,使得一个服务器可以近乎同一时刻为多个客户端提供服务.实现并发的方式有多种,下面以多进 ...
- python 网络并发 :理论部分
1.今日内容大纲 进程的介绍(理论部分) 进程的创建以及分析 获取进程的pid 进程之间的隔离 1.进程的介绍(理论部分) 1.1什么是进程 一个正在被cpu执行的程序就是一个进程,一个程序可以开启多 ...
- Python多线程并发的误区
由于项目要做一个并发测试,由于断言的东西较多,决定手写脚本.于是用python写了脚本: def test_method(thread_no): print("%s===test_metho ...
- 《Python》并发编程
手工操作 —— 穿孔卡片 1946年第一台计算机诞生--20世纪50年代中期,计算机工作还在采用手工操作方式.此时还没有操作系统的概念. 程序员将对应于程序和数据的已穿孔的纸带(或卡片)装入输 ...
随机推荐
- 基于spring boot 2.x 的 spring-cloud-admin 实践
spring cloud admin 简介 Spring Boot Admin 用于监控基于 Spring Boot 的应用,它是在 Spring Boot Actuator 的基础上提供简洁的可视化 ...
- windows 下 MyEclipse 逆向工程生成hiberate 对应配置文件以及 javaBean。
步骤1: 右边工具栏 -> 右击你的项目 -> 选中 MyEclipse -> Project Facets -> install Hibernate Facet -> ...
- 【Spring】2、BeanFactory 和FactoryBean的区别
转自:http://chenzehe.iteye.com/blog/1481476 1. BeanFactory BeanFactory定义了 IOC 容器的最基本形式,并提供了 IOC 容器应遵守的 ...
- Spring Security(二)
Spring Security(二) 注:凡是源码部分,我已经把英文注释去掉了,有兴趣的同学可以在自己项目里进去看看.:-) 定义用户认证逻辑 用户登录成功后,用户的信息会被 Security 封装在 ...
- 盐水的故事(hdu1408)
盐水的故事 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Subm ...
- ThreadLocal的用法
阿里巴巴 java 开发手册中推荐的 ThreadLocal 的用法: public class DateUtil { public static final ThreadLocal<DateF ...
- 语音识别(ASR) 阿里云
做语音识别这块的呢,国内领先的有科大讯飞,BAT这几家公司,鉴于使用科大讯飞的接口需要付费,腾讯云的语音识别申请了几天也没给通过,比较了一下阿里和百度的,个人觉得阿里云的好用一些,这篇博客来讲讲怎么讲 ...
- js文字滚动效果
function (global) { var logo = document.getElementById('logo'); var text = document.createTextNode(' ...
- vue 子组件和父组件
作者QQ:1095737364 QQ群:123300273 欢迎加入! 1.添加子组件 1.父组件修改 <template> <!-- v-for 表情表示循环输出数据 ...
- 记一次MySQL安装出现的坑爹问题。。。
关键词:mysql安装 msvcr100.dll缺失 vc++2010 : win10系统首次安装mysql,图方便下载了图形界面的安装包(5.6.4),本以为小事一桩:装一半失败.卸载清注册表.重 ...