python中實現多協程併發查詢數據庫

使用python中協程中的gevent模塊實現併發查詢數據庫。
考慮過用多線程,但線程之間共享全局變量,可能會出現數據錯亂問題,故使用多協程。

import time
import gevent
from py2neo import Node

from RDPlatform.common.sqlSentence import exe_sql_all
from RDPlatform.settings import graph
# 開始時間
start_time = time.time()
list1 = []
sql1 = "select id ,username from rdsystem_user"
row1 = exe_sql_all(sql1)
n=len(row1)
# print(n)
m = n // 4
r1 = []
r2 = []
r3 = []
r4 = []
for j in row1:
    i = row1.index(j) + 1
    if i <= m:
        r1.append(j)
    if i > m and i <= m * 2:
        r2.append(j)
    if i > m * 2 and i <= m * 3:
        r3.append(j)
    if i > m * 3 and i <= n:
        r4.append(j)
# print(len(r1), len(r2), len(r3), len(r4))
# 使用協程
gevent.joinall([
    gevent.spawn(createusers, r1),
    gevent.spawn(createusers, r2),
    gevent.spawn(createusers, r3),
    gevent.spawn(createusers, r4),
])

for r in row1:
    sql_id = str(r[0])
    username = r[1]
     list1.append({
     'sql_id':sql_id,
        'username':username
  })

# 結束時間
stop_time = time.time()
print('run time is %s' % (stop_time - start_time))
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章