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年代中期,计算机工作还在采用手工操作方式.此时还没有操作系统的概念. 程序员将对应于程序和数据的已穿孔的纸带(或卡片)装入输 ...
随机推荐
- Java-函数式编程(三)流(Stream)
流使程序猿可以在抽象层上对集合进行操作. 从外部迭代到内部迭代 什么是外部迭代和内部迭代呢? 个人认为,外和内是相对集合代码而言. 如果迭代的业务执行在应用代码中,称之为外部迭代. 反之,迭代的业务执 ...
- 本地服务器搭建服务:svn
SVN(使用VisualSVN-server)可视化SVN 服务搭建,适合小白:简单又快捷,深入了解命令行方式等高手请移步官网看教程 1.官网 :http://subversion.apache.or ...
- js-权威指南学习笔记19.2
1.jQuery动画是异步的,会立刻返回,但动画会在后台执行,可传入函数作为动画完成的回调函数. 2.jQuery动画默认是队列化的. 3.stop()方法接受两个可选的布尔值参数,如果第一个参数是t ...
- 原生css 中变量的使用
前两天看到阮大神的一篇在css中使用变量的文章,整理了一下. 这个重要的 CSS 新功能,所有主要浏览器已经都支持了.本文全面介绍如何使用它,你会发现原生 CSS 从此变得异常强大. 一.变量的声明 ...
- jQuery中的deferred对象和extend方法
1⃣️deferred对象 deferred对象是jQuery的回调函数解决方案,它是从jQuery1.5.0版本开始引入的功能 deferred对象的方法 (1) $.Deferred() 生成一个 ...
- C# Newtonsoft.Json反序列化为dynamic对象之后的使用
通过Newtonsoft.Json将一个json类型的字符串反序列化为dynamic后直接使用报错 源代码: namespace ConsoleApplication1 { class Program ...
- 图像矫正-基于opencv实现
一.引言 上篇文章中四种方法对图像进行倾角矫正都非常有效.Hough变换和Radon相似,其抗干扰能力比较强,但是运算量大,程序执行慢,其改进方法为:我们可以不对整幅图像进行操作,可以在图像中选取一块 ...
- Python学习笔记之—— File(文件) 对象常用函数
file 对象使用 open 函数来创建,下表列出了 file 对象常用的函数: 1.file.close() close() 方法用于关闭一个已打开的文件.关闭后的文件不能再进行读写操作, 否则会触 ...
- 第一篇 Windows docker 概述
本人行业属于智能制造,偏向工厂应用,客户端程序全部是.Net 的 WinForm:本系统的后台是.Net,多系统交互的有java的:因系统发布效率问题,想采用docker Windows 的生产力环境 ...
- Python之密度聚类
# -*- coding: utf-8 -*- """ Created on Tue Sep 25 10:48:34 2018 @author: zhen "& ...