進(jìn)程和線程的任務(wù)切換由操作系統(tǒng)完成
協(xié)程任務(wù)之間的切換由程序(代碼)完成,只有遇到協(xié)程模塊能識別的IO操作的時候,程序才會進(jìn)行任務(wù)切換,實現(xiàn)并發(fā)的效果
實例實現(xiàn):
from gevent import monkey;
monkey.patch_all()
import requests
import time
import gevent
data = {'type': 'log', 'status': 'info', 'project_name': 'Project_0309_141331', 'project_desc': 'nan',
'mac_addr': '70-B5-E8-2A-4C-B0', 'license_code': 'E9pO5YUqy5tCMfHcUkWc/A==',
'studio_version': '2021/01/27 16:16:27 Build', 'case_name': 'TEST1.py', 'case_result': 'FAIL',
'case_cost_time': '2', 'api_name': 'sleep', 'api_result': 'PASS', 'api_cost_time': '0.401',
'create_time': '20210316103249'}
def task(n):
# time.sleep(1)
res = requests.post(url="https://www.baidu.com", json=data, timeout=1)
if res.status_code != 200:
# do_bak()
print("失敗接箫,備份數(shù)據(jù)")
def asyncc():
g_lst = []
for i in range(10):
g = gevent.spawn(task, i)
g_lst.append(g)
gevent.joinall(g_lst) # for g in g_lst:g.join()