python3 多线程 threading.local 代理_threading.local的作用?Python每日3题(多线程专题)...
这里是Python7编程挑战-多线程专题!
每天学习3个问题,包括初级,中级,高级问题各1个。
今天是第5天!一起来呀,就7天!每日3题是麦叔的面试系列专题之一,每天包括初级,中级,高级难度题目各一道。
每日3题,100天之后成为大牛!
如果有不明白的,给麦叔留言。
[Easy] threading.local的作用?
思考30秒再往下翻...
Python提供了 threading.local 类,将这个类实例化得到一个全局对象, 但是不同的线程使用这个对象存储的数据其它线程不可见(本质上就是不同的线程使用这个对象时为其创建一个独立的字典)。
[Normal] 请用代码演示一下互斥锁
思考30秒再往下翻...
互斥锁是一种独占锁,同一时刻只有一个线程可以访问共享的数据。使用很简单,初始化锁对象,然后将锁当做参数传递给任务函数,在任务中加锁,使用后释放锁。
import threading
import time
number = 0
lock = threading.Lock()
def plus(lk):
global number # global声明此处的number是外面的全局变量number
lk.acquire() # 开始加锁
for _ in range(1000000): # 进行一个大数级别的循环加一运算
number += 1
print("子线程%s运算结束后,number =%s" % (threading.current_thread().getName(), number))
lk.release() # 释放锁,让别的线程也可以访问number
if __name__ == '__main__':
for i in range(2): # 用2个子线程,就可以观察到脏数据
t = threading.Thread(target=plus, args=(lock,)) # 需要把锁当做参数传递给plus函数
t.start()
time.sleep(2) # 等待2秒,确保2个子线程都已经结束运算。
print("主线程执行完毕后,number = ", number)
[Hard] 什么是僵尸进程和孤儿进程?怎么避免僵尸进程?
思考30秒再往下翻...
孤儿进程:父进程退出,子进程还在运行的这些子进程都是孤儿进程,孤儿进程将被init 进程(进程号为1)所收养,并由init 进程对他们完成状态收集工作。
僵尸进程:进程使用fork 创建子进程,如果子进程退出,而父进程并没有调用wait 或waitpid 获取子进程的状态信息,那么子进程的进程描述符仍然保存在系统中的这些进程是僵尸进程。
避免僵尸进程的方法:
1.fork 两次用孙子进程去完成子进程的任务
2.用wait()函数使父进程阻塞
3.使用信号量,在signal handler 中调用waitpid,这样父进程不用阻塞
import os, sys, time
pid = os.fork()
getpid = os.getpid()
getppid = os.getppid()
if pid == 0:
print("子进程 pid={}, getpid={}, getppid={}".format(pid, getpid, getppid))
else:
print("主进程 pid={}, getpid={}, getppid={}".format(pid, getpid, getppid))
time.sleep(100) # 在主进程结束sleep之前,子进程就会成为僵尸进程
mac系统可以通过命令ps -A -ostat,ppid,pid,command | grep -e '^[Zz]'查看僵尸进程
➜ ~ ps -A -ostat,ppid,pid,command | grep -e '^[Zz]'
Z+ 31741 31742 (Python)
➜ ~https://mp.weixin.qq.com/s/2zEESWd2vBVnJFzPRdf06Amp.weixin.qq.com
你可以再文章下面打卡,分享你的看法。
我是麦叔:教你学编程,陪你走职场的路!
python3 多线程 threading.local 代理_threading.local的作用?Python每日3题(多线程专题)...相关推荐
- delphi 多个线程 多个进度条_多线程有哪些优点?- Python每日3题(多线程专题)
这里是Python7编程挑战-多线程专题! 每天学习3个问题,包括初级,中级,高级问题各1个. 今天是第2天!一起来呀,就7天! 每日3题是麦叔的面试系列专题之一,每天包括初级,中级,高级难度题目各一 ...
- Charles学习(四)之使用Map local代理本地静态资源以及配置移动端代理在真机上调试iOS和Android客户端...
前言 问题一:我们在App内嵌H5开发的过程中,肯定会遇到一个问题就是我不想在chrome的控制台中调试也不想在模拟器中调试,我想要在真机上调试,那么如何解决这个问题呢? 问题二:我们期待调试时达到的 ...
- Charles学习(三)之使用Map local代理本地静态资源以及配置网页代理在Mac模拟器调试iOS客户端...
前言 问题一:我们在App内嵌H5开发的过程中,肯定会遇到一个问题就是我不想在chrome的控制台中调试,我想要在手机上调试,那么如何解决这个问题呢? 问题二:我们期待调试时达到的效果就是和Charl ...
- python爬虫天天基金_不使用Python爬虫框架,多线程+代理池爬取天天基金网、股票数据...
提到爬虫,大部分人都会想到使用Scrapy工具,但是仅仅停留在会使用的阶段.为了增加对爬虫机制的理解,我们可以手动实现多线程的爬虫过程,同时,引入IP代理池进行基本的反爬操作. 本次使用天天基金网进行 ...
- Python爬虫:运用多线程、IP代理模块爬取百度图片上小姐姐的图片
Python爬虫:运用多线程.IP代理模块爬取百度图片上小姐姐的图片 1.爬取输入类型的图片数量(用于给用户提示) 使用过百度图片的读者会发现,在搜索栏上输入关键词之后,会显示出搜索的结果,小编想大多 ...
- python并发编程:协程asyncio、多线程threading、多进程multiprocessing
python并发编程:协程.多线程.多进程 CPU密集型计算与IO密集型计算 多线程.多进程与协程的对比 多线程 创建多线程的方法 多线程实现的生产者-消费者爬虫 Lock解决线程安全问题 使用线程池 ...
- python 守护线程 join_Python多线程threading join和守护线程setDeamon原理详解
同一进程下的多个线程共享内存数据,多个线程之间没有主次关系,相互之间可以操作:cpu执行的都是线程,默认程序会开一个主线程:进程是程序以及和程序相关资源的集合:某些场景下我们可以使用多线程来达到提高程 ...
- python的多线程threading
多线程threading 1.Thread创建线程: 上代码: #!/usr/bin/env python3import threading import timedef A():t_name = t ...
- Python多线程threading和多进程multiprocessing的区别及代码实现
1. 多线程threading import time from threading import Threaddef thread_read(data):while True:print('read ...
最新文章
- python【蓝桥杯vip练习题库】ALGO-91 Anagrams问题
- JavaScript 编码小技巧
- 公众号知道我浏览他吗_微信公众平台文章能看到访客吗?
- SSM/SpringBoot+layui实现数据表格
- 安装eclipse中html/jsp/xml editor插件以及改动html页面的字体
- linux文本编辑器vi实验心得,linux中vi编辑器的练习心得
- x264_param_t结构体参数分析
- Redis基础知识详解(非原创)
- EasyRecovery---U盘数据恢复技巧
- 使用读写管道作为事件通知的C++实现
- mysql 附近3公里的,mysql 查询附近N公里内数据
- 视频教程-java项目实战之欢乐斗地主游戏开发教程 毕业项目课程设计带源码-Java
- VS2019离线安装方法
- 内存碎片的定义、种类、产生原因以及解决办法
- COJ 0358 xjr考考你数据结构(根号3)线段树区间修改
- Linux关闭swap
- 商品-商品订单-支付订单
- Shell内建命令之echo、local、logout
- ListContainer教程
- Python制作塔防小游戏