gevent多協程運用

2022-08-15 15:51:15 字數 1432 閱讀 3127

#

導包import

gevent

#猴子補丁

from gevent import

monkey

monkey.patch_all()

from d8_db import

connectmysql

import

time

import

pymysql

#協程入庫

class

myinsertgevent(object):

#定義協程方法

definsert_gevent(self,startnum,endnum):

#建立資料庫連線

my_connect = pymysql.connect(host='

localhost

',user='

root

',password='

mysql

',database='

mymac

',charset='

utf8')

#定義游標物件

cursor =my_connect.cursor()

#入庫操作 引數開始結束

for item in

range(startnum,endnum):

入庫cursor.execute(

'insert into `spider_data` values("%s","%s")

' %('

123','

456'

))

#事務提交資料庫

my_connect.commit()

#關閉游標

cursor.close()

#關鍵資料庫連線

my_connect.close()

if__name__ == "

__main__":

a =time.time()

#例項化協程入庫

myinsertgevent =myinsertgevent()

gevent.joinall([

#建立協程

gevent.spawn(myinsertgevent.insert_gevent,1,2000),

gevent.spawn(myinsertgevent.insert_gevent,2001,4000),

gevent.spawn(myinsertgevent.insert_gevent,4001,6000),

gevent.spawn(myinsertgevent.insert_gevent,6001,8000),

gevent.spawn(myinsertgevent.insert_gevent,8001,10000),

])#列印用時

print(time.time()-a)

gevent實現協程

1 yield實現 import time def task 1 while true print 1 time.sleep 0.1 yield def task 2 while true print 2 time.sleep 0.1 yield def main t1 task 1 建立迭代器 t...

gevent 協程用法

文章介紹了一種採用迴圈的方式生產協程列表,並可以向協程函式傳遞引數。協程引用 import gevent from gevent import monkey,pool monkey.patch all 初始化協程池 poolnum 10 pool pool.pool poolnum 例項化乙個協程池...

python 協程 gevent模組

import requests 匯入 gevent import gevent 由於切換是在io操作時自動完成 所以gevent需要修改python自帶的一些標準庫 這一過程在啟動時通過monkey patch 猴子補丁 完成 from gevent import monkey monkey.pat...