Python爬虫编程思想(139):多线程和多进程爬虫--线程锁
蒙娜丽宁 于 2022-03-31 19: 2022-3-31 19:28:30 Author: blog.csdn.net(查看原文) 阅读量:9 收藏

蒙娜丽宁 于 2022-03-31 19:28:30 发布 1828 收藏 1

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

153 篇文章 24 订阅 ¥29.90 ¥99.00

        多线程的目的就是让多段程序并发运行,但在一些情况下,让多段程序同时运行会造成很多麻烦,如果这些并发运行的程序还共享数据的话,有可能会造成脏数据以及其他数据不一致的后果。这里的脏数据是指由于多段程序同时读写一个或一组变量,由于读写顺序的问题造成了最终的结果与我们期望的不一样的后果。例如,有一个整数变量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)  # 此处可能有更多的代码

文章来源: https://blog.csdn.net/nokiaguy/article/details/123880984
如有侵权请联系:admin#unsafe.sh