python 多进程并发接口测试实例
#encoding=utf-8
import requests
import json
import os
import hashlib
print "register------"
data = json.dumps({'username': 'lildddy1', 'password': 'wcx123wacs', 'email': 'lsily@qq.com'}) #
r = requests.post('http://39.106.41.11:8080/register/', data= data)
print r.status_code
print r.text
print type(r.json())
print str(r.json())
c:\Python27\Scripts>python
task_test.py
register------
200
{"username":
"lildddy1", "code": "01"}
<type
'dict'>
{u'username':
u'lildddy1', u'code': u'01'}
#encoding=utf-8
import requests
import json
import string
import random
import multiprocessing
from multiprocessing import Process, Pool, Value, Lock, Manager
import time
def test_register(lock,success_Count,failure_Count):
print "************"
data_dict={'username': 'xxdddy', 'password': 'wcx123wacs', 'email': 'lsily@qq.com'}
for i in range(2):
data_dict["username"] = "".join(random.sample(string.lowercase,10))+str(i)
data = json.dumps(data_dict) #
r = requests.post('http://39.106.41.11:8080/register/', data= data)
#print r.status_code
#print r.text
#print type(r.json())
print str(r.json()) #用json的规则,把服务器的接口返回转换为了一个字典
if r.json()["code"]=="00" and isinstance(r.json()["userid"],int):
lock.acquire()
success_Count.value+=1
lock.release()
else:
lock.acquire()
failure_Count.value+=1
lock.release()
#print "*"*50
if __name__ == '__main__':
lock=manager.Lock()#同学说用共享锁,改成lock=manager.Lock()
manager = Manager()
success_Count = manager.Value('i',0)
failure_Count = manager.Value('i',0)
proc_list = [Process(target=test_register, args=(lock,success_Count,failure_Count)) for i in range(2)]
for p in proc_list: p.start()
for p in proc_list: p.join()
print 'Waiting for all subprocesses done...'
print 'All subprocesses done.'
print success_Count.value
print failure_Count.value
c:\Python27\Scripts>python task_test.py
************
************
{u'code': u'00', u'userid': 2685}
{u'code': u'00', u'userid': 2686}
{u'code': u'00', u'userid': 2687}
{u'code': u'00', u'userid': 2688}
Waiting for all subprocesses done...
All subprocesses done.
4
0
单进程:
#encoding=utf-8
import requests
import json
import os
import hashlib
import string
success_count =0
faileure_count =0
print "register------"
data_dict={'username': 'xxdddy', 'password': 'wcx123wacs', 'email': 'lsily@qq.com'}
for i in range(5):
data_dict["username"] = "xx2ddddy"+str(i)
data = json.dumps(data_dict) #
r = requests.post('http://39.106.41.11:8080/register/', data= data)
print r.status_code
print r.text
print type(r.json())
print str(r.json()) #用json的规则,把服务器的接口返回转换为了一个字典
if r.json()["code"]=="00" and isinstance(r.json()["userid"],int):
success_count+=1
else:
faileure_count+=1
print "*"*50
print "success count:",success_count
print "faileure count:",faileure_count
多进程的
方法1:
#encoding=utf-8
import requests
import json
import string
import random
import multiprocessing
from multiprocessing import Process, Pool, Value, Lock, Manager
import time
def test_register(lock,success_Count,failure_Count):
print "************"
data_dict={'username': 'xxdddy', 'password': 'wcx123wacs', 'email': 'lsily@qq.com'}
for i in range(2):
data_dict["username"] = "".join(random.sample(string.lowercase,10))+str(i)
data = json.dumps(data_dict) #
r = requests.post('http://39.106.41.11:8080/register/', data= data)
#print r.status_code
#print r.text
#print type(r.json())
print str(r.json()) #用json的规则,把服务器的接口返回转换为了一个字典
if r.json()["code"]=="00" and isinstance(r.json()["userid"],int):
lock.acquire()
success_Count.value+=1
lock.release()
else:
lock.acquire()
failure_Count.value+=1
lock.release()
#print "*"*50
if __name__ == '__main__':
lock = Lock()
manager = Manager()
success_Count = manager.Value('i',0)
failure_Count = manager.Value('i',0)
proc_list = [Process(target=test_register, args=(lock,success_Count,failure_Count)) for i in range(2)]
for p in proc_list: p.start()
for p in proc_list: p.join()
print 'Waiting for all subprocesses done...'
print 'All subprocesses done.'
print success_Count.value
print failure_Count.value
方法2:
#encoding=utf-8
import requests
import json
import string
import random
import multiprocessing
from multiprocessing import Process, Pool, Value, Lock, Manager
import time
def test_register(counter):
print "************"
data_dict={'username': 'xxdddy', 'password': 'wcx123wacs', 'email': 'lsily@qq.com'}
for i in range(2):
data_dict["username"] = "".join(random.sample(string.lowercase,10))+str(i)
data = json.dumps(data_dict) #
r = requests.post('http://39.106.41.11:8080/register/', data= data)
#print r.status_code
#print r.text
#print type(r.json())
print str(r.json()) #用json的规则,把服务器的接口返回转换为了一个字典
if r.json()["code"]=="00" and isinstance(r.json()["userid"],int):
#lock.acquire()
counter.increment_success_count()
#lock.release()
else:
#lock.acquire()
counter.increment_failure_count()
#lock.release()
#print "*"*50
class Counter(object):
def __init__(self, initval = 0):
self.success_count = Value('i', initval)
self.failure_count = Value('i', initval)
self.lock = Lock()
def increment_success_count(self):
with self.lock:
self.success_count.value += 1 # 共享变量自加1
def increment_failure_count(self):
with self.lock:
self.failure_count.value += 1 # 共享变量自加1
def get_success_count(self):
with self.lock:
return self.success_count.value
def get_failure_count(self):
with self.lock:
return self.failure_count.value
if __name__ == '__main__':
#lock = Lock()
manager = Manager()
counter= Counter()
proc_list = [Process(target=test_register, args=(counter,)) for i in range(2)]
for p in proc_list: p.start()
for p in proc_list: p.join()
print 'Waiting for all subprocesses done...'
print 'All subprocesses done.'
print counter.get_success_count()
print counter.get_failure_count()
用进程池子Pool
方法3:
#encoding=utf-8
import requests
import json
import string
import random
import multiprocessing
from multiprocessing import Pool, Value,Manager
import time
def test_register(lock,success_Count,failure_Count):
print "************"
data_dict={'username': 'xxdddy', 'password': 'wcx123wacs', 'email': 'lsily@qq.com'}
for i in range(2):
data_dict["username"] = "".join(random.sample(string.lowercase,10))+str(i)
data = json.dumps(data_dict) #
r = requests.post('http://39.106.41.11:8080/register/', data= data)
#print r.status_code
#print r.text
#print type(r.json())
print str(r.json()) #用json的规则,把服务器的接口返回转换为了一个字典
if r.json()["code"]=="00" and isinstance(r.json()["userid"],int):
lock.acquire()
success_Count.value+=1
lock.release()
else:
lock.acquire()
failure_Count.value+=1
lock.release()
#print "*"*50
if __name__ == '__main__' :
manager = Manager()
lock =manager.Lock()
success_Count = manager.Value('i',0)
failure_Count = manager.Value('i',0)
pool = Pool(3) # start 4 worker processes
pool.apply_async(test_register,args=(lock,success_Count,failure_Count))
pool.apply_async(test_register,args=(lock,success_Count,failure_Count))
pool.close()
pool.join()
print "Process end."
print "success count:",success_Count.value
print "faileure count:",failure_Count.value
python 多进程并发接口测试实例的更多相关文章
- Python多进程并发(multiprocessing)用法实例详解
http://www.jb51.net/article/67116.htm 本文实例讲述了Python多进程并发(multiprocessing)用法.分享给大家供大家参考.具体分析如下: 由于Pyt ...
- python多进程并发和多线程并发和协程
为什么需要并发编程? 如果程序中包含I/O操作,程序会有很高的延迟,CPU会处于等待状态,这样会浪费系统资源,浪费时间 1.Python的并发编程分为多进程并发和多线程并发 多进程并发:运行多个独立的 ...
- python 多进程并发与多线程并发
本文对python支持的几种并发方式进行简单的总结. Python支持的并发分为多线程并发与多进程并发(异步IO本文不涉及).概念上来说,多进程并发即运行多个独立的程序,优势在于并发处理的任务都由操作 ...
- Python多进程并发操作进程池Pool
目录: multiprocessing模块 Pool类 apply apply_async map close terminate join 进程实例 multiprocessing模块 如果你打算编 ...
- [转]Python多进程并发操作中进程池Pool的应用
Pool类 在使用Python进行系统管理时,特别是同时操作多个文件目录或者远程控制多台主机,并行操作可以节约大量的时间.如果操作的对象数目不大时,还可以直接使用Process类动态的生成多个进程,十 ...
- Python多进程并发操作中进程池Pool的应用
Pool类 在使用Python进行系统管理时,特别是同时操作多个文件目录或者远程控制多台主机,并行操作可以节约大量的时间.如果操作的对象数目不大时,还可以直接使用Process类动态的生成多个进程,十 ...
- python多进程并发
由于Python下调用Linux的Shell命令都需要等待返回,所以常常我们设置的多线程都达不到效果,因此在调用shell命令不需要返回时,使用threading模块并不是最好的方法. http: ...
- python多进程并发redis
Redis支持两种持久化方式RDB和AOF,RDB持久化能够快速的储存和回复数据,但在服务器停机时会丢失大量数据,AOF持久化能够高效的提高数据的安全性,但在储存和恢复数据方面要耗费大量的时间,最好的 ...
- PYTHON多进程并发WEB服务器(利用LINUX的FORK)
这个又牛X 一点点.. 这还不涉及IO,如果调用GEVENT之类作异步IO或非阻塞IO,那就大框架都有啦.. ############################################# ...
随机推荐
- IntelliJ IDEA导出Java 可执行Jar包
extends:http://blog.sina.com.cn/s/blog_3fe961ae0102uy42.html 保证自己的Java代码是没有问题的,在IDEA里面是可以正常运行的,然后,按下 ...
- 9.11 Django视图 view和路由
2018-9-11 16:34:16 2018-9-11 19:00:24 越努力,.越幸运! Django框架参考: https://www.cnblogs.com/liwenzhou/p/8296 ...
- Css 中的 block,inline和inline-block概念和区别
1.block和inline这两个概念是简略的说法,完整确切的说应该是 block-level elements (块级元素) 和 inline elements (内联元素).block元素通常被现 ...
- 2018-2019-2 20165330《网络对抗技术》Exp6 信息搜集与漏洞扫描
目录 基础问题 相关知识 实验目的 实验内容 实验步骤 实验总结与体会 实验目的 掌握信息搜集的最基础技能与常用工具的使用方法. 返回目录 实验内容 各种搜索技巧的应用 使用搜索引擎 搜索网址目录结构 ...
- PHP使用 zip 扩展压缩文件
在公司遇到一个问题,是使用zip打包用户的上传文件,提供集体下载. -- 第一个想法就是使用exec在Linux进行打包.但是...exec方法吧,你懂得,我不太愿意使用这个函数. -- 于是上网查找 ...
- 青蛙的约会---poj1061(扩展欧几里德)
题目链接:http://poj.org/problem?id=1061 就是找到满足 (X+mt)-(Y+nt) = Lk 的 t 和 k 即可 上式可化简为 (n-m)t + Lk = X-Y;满足 ...
- 单调栈&单调队列学习笔记!
ummm,,,都是单调系列就都一起学了算了思想应该都差不多呢qwq 其实感觉这俩没有什么可说的鸭QAQ就是维护一个单调的东西,区别在于单调栈是一段进一段出然后单调队列是一段进另一段出?没了 好趴辣重点 ...
- Redis经验谈(转)
原文:http://www.programmer.com.cn/14577/ 新浪作为全世界最大的Redis用户,在开发和运维方面有非常多的经验.本文作者来自新浪,希望能为业界提供一些亲身经历,让大家 ...
- Hadoop的那些事儿(转)
原文:http://www.searchtb.com/tag/mapreduce 在说Hadoop之前,作为一个铁杆粉丝先粉一下Google.Google的伟大之处不仅在于它建立了一个强悍 ...
- grunt学习二
1. 新建文件和文件目录 mkdir grunt-in-action cd grunt-in-action cd grunt-in-action mkdir grunt-empty cd grunt- ...