爬虫day8通信和线程池进程池总结

day8通信和线程池进程池总结

一、线程间通信

1.线程间通信

同一个进程中的多个线程可以直接通信(一个线程可以直接使用另外一个线程中产生的数据)

通信原则:使用全局变量

from threading import Thread, current_thread

# 导入线程队列
from queue import Queue
import time
from random import randint

# ======================案例1=============================
# def sum1(x, y):
#     # z是第一个子线程定义的全局变量
#     global z
#     z = x + y
#     print(current_thread(), a)
#

# def func2():
#     print(current_thread(), z, a)
#

# if __name__ == '__main__':
#     # a是在主线程中定义的全局变量
#     a = 100
#
#     t1 = Thread(target=sum1, args=(10, 20))
#     t1.start()
#
#     t1.join()
#
#     t2 = Thread(target=func2)
#     t2.start()
#
#     print('主线程:', current_thread(), z)


# ======================案例2  -  收集其他线程产生的数据 ============================
# def download(name):
#     # print(f'{name}数据')
#     time.sleep(randint(2, 7))
#     all_data.append(f'{name}数据')
#
#
# if __name__ == '__main__':
#     # 定义全局列表
#     all_data = []
#
#     # 创建子线程同时下载多个电影数据
#     names = ['电影1', '电影2', '电影3', '电影4']
#     ts = []
#     for name in names:
#         t = Thread(target=download, args=(name,))
#         t.start()
#         ts.append(t)
#
#     # 等到所有电影都下载结束后,在主线程中处理下载得到的数据
#     for t in ts:
#         t.join()
#
#     print(all_data)


# ======================案例3 - 使用线程队列 ==========================
def download(name):
    #
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值