网创优客建站品牌官网
为成都网站建设公司企业提供高品质网站建设
热线:028-86922220
成都专业网站建设公司

定制建站费用3500元

符合中小企业对网站设计、功能常规化式的企业展示型网站建设

成都品牌网站建设

品牌网站建设费用6000元

本套餐主要针对企业品牌型网站、中高端设计、前端互动体验...

成都商城网站建设

商城网站建设费用8000元

商城网站建设因基本功能的需求不同费用上面也有很大的差别...

成都微信网站建设

手机微信网站建站3000元

手机微信网站开发、微信官网、微信商城网站...

建站知识

当前位置:首页 > 建站知识

python3爬虫lock怎么有序的处理多线程

这篇文章给大家分享的是有关python3爬虫lock怎么有序的处理多线程的内容。小编觉得挺实用的,因此分享给大家做个参考。一起跟随小编过来看看吧。

10年积累的成都网站设计、成都网站制作经验,可以快速应对客户对网站的新想法和需求。提供各种问题对应的解决方案。让选择我们的客户得到更好、更有力的网络服务。我虽然不认识你,你也不认识我。但先网站设计后付款的网站建设流程,更有西乌珠穆沁免费网站建设让你可以放心的选择与我们合作。

第一个线程处理好了,结果传递给第二个线程,那么需要“锁住“第一个线程。同时需要共享的内存shared memory。

如果不加任何lock:

# 不加任何处理,同时运行两个线程
import threading
def job1():
    global A
    for i in range(10):
        A += 1
        print("Job1 : ", A)
    
def job2():
    global A
    for i in range(10):
        A += 10
        print("Job2 : ", A)
        
A = 0 # global variable
t1 = threading.Thread(target=job1)
t2 = threading.Thread(target=job2)
t1.start()
t2.start()
t1.join()
t2.join()

运行结果

Job1 :  1
Job1 :  2
Job1 :  3
Job2 :  13Job1 :
Job2 :  24
Job2 :  34
Job2 :  44
Job2 :  54
Job2 :  64
Job2 :  74
Job2 :  84
Job2 :  94
Job2 :  104
 14
Job1 :  105
Job1 :  106
Job1 :  107
Job1 :  108
Job1 :  109
Job1 :  110

这两个线程会同时运行,且打印还比较乱。如果我想先结束job1,再进行job2,那么使用lock——定义一个全局变量lock,同时在每个job中传入lock。从而两者运行就不会相互影响。

 

加上lock

def job1():
    global A, lock
    # 传入全局变量lock,同时通过acquire上锁,通过release解锁。
    lock.acquire()
    for i in range(10):
        A += 1
        print("Job1 : ", A)
    lock.release()
    
def job2():
    global A, lock
    lock.acquire()
    for i in range(10):
        A += 10
        print("Job2 : ", A)
    lock.release()
        
lock = threading.Lock()
A = 0 # global variable
t1 = threading.Thread(target=job1)
t2 = threading.Thread(target=job2)
t1.start()
t2.start()
t1.join()
t2.join()

运行结果

Job1 :  1
Job1 :  2
Job1 :  3
Job1 :  4
Job1 :  5
Job1 :  6
Job1 :  7
Job1 :  8
Job1 :  9
Job1 :  10
Job2 :  20
Job2 :  30
Job2 :  40
Job2 :  50
Job2 :  60
Job2 :  70
Job2 :  80
Job2 :  90
Job2 :  100
Job2 :  110

感谢各位的阅读!关于python3爬虫lock怎么有序的处理多线程就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到吧!


网站题目:python3爬虫lock怎么有序的处理多线程
URL分享:http://bjjierui.cn/article/ppsdod.html

其他资讯