Python爬虫编程思想(139):多线程和多进程爬虫--线程锁

        多线程的目的就是让多段程序并发运行,但在一些情况下,让多段程序同时运行会造成很多麻烦,如果这些并发运行的程序还共享数据的话,有可能会造成脏数据以及其他数据不一致的后果。这里的脏数据是指由于多段程序同时读写一个或一组变量,由于读写顺序的问题造成了最终的结果与我们期望的不一样的后果。例如,有一个整数变量n,初始值为1,现在要为该变量加1,然后输出该变量的值,目前有两个线程(Thread1和Thread2)做同样的工作。当Thread1为变量n加1后,这时CPU的计算时间恰巧被Thread2夺走,在执行Thread2的线程函数时又对变量n加1,所以目前n被加了两次1,变成了3。这时不管是继续执行Thread2,还是接着执行Thread1,输出的n都会等于3。这也就意味着n等于2的值没有输出,如果正好在n等于2时需要做更多的处理,这也就意味着这些工作都不会按预期完成了,因为这时n已经等于3了。我们把这个变量当前的值称为脏数据,就是说n原本应该等于2的,而现在却等于3了。这一过程可以看下面的线程函数。

n = 1
# 如果用多个线程执行fun函数,就有可能造成n持续加1,而未处理的情况
def fun()
    n += 1
    print(n)  # 此处可能有更多的代码

        

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值