python多线程操作redis,效率并没有提高
问题描述
单线程操作一个循环用了1.38分钟
多线程操作3次用了4.13分钟,为什么没有加快效率,瓶颈在哪里?请大神指教。
问题出现的环境背景及自己尝试过哪些方法
相关代码
// 请把代码文本粘贴到下方(请勿用图片代替代码)
def loop(new_barcode):
print new_barcode
# print '开始时间:' + time.ctime()
flag = len(r.sMember(new_barcode)) * 0.85
for gene in gene_list: # gene_list 是22万个set,每个set里面有60条数据
j = len(r.sInter(new_barcode,gene)) # r.sInter() 获取交集
if j>flag:
print new_barcode,gene,str(j)+"个相同"
# print '结束时间:' + time.ctime()
def main():
print('starting at:', time.ctime())
threads = []
nloops = range(len(new_barcode_list))
for i in nloops:
t = MyThread(loop, (new_barcode_list[i][0],), loop.__name__)
threads.append(t)
for i in nloops:
threads[i].start()
for i in nloops:
threads[i].join()
print('all DONE at:', time.ctime())
你期待的结果是什么?实际看到的错误信息又是什么?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
Python的线程基本没啥用, 一般计算密集型程序 提高效率 会使用进程, IO密集型程序一般上 协程, 类似 gevent 什么的
线程没啥用吧
不了解redis,但从执行时间看,3次是1次的3倍时间,应该是收到cpython GIL限制,
GIL全局解釋器鎖,是電腦程式設計語言解釋器用於同步執行緒的一種機制,它使得任何時刻僅有一個執行緒在執行。即便在多核心處理器上,使用 GIL 的解釋器也只允許同一時間執行一個執行緒。
简单说就是在用1个处理器在跑,这导致python用多线程跑密集cpu运算的程序显得很鸡肋。
一般建议多线程跑高密集io,如果要善用可以用多进程。