python第12天

并行编程

1._thread 模块有很多缺点,已很少使用
2.threading 模块
.Thread(target=目标函数, args=(参数元组))
自定义Thread派生类,重写run方法逻辑
启动线程:.start()
要求主线程等待:.join()
获取当前线程:.current_thread()
同步原语:锁 threading.Lock
获得:.acquire()
释放:.release()
支持上下文操作with lock:

queue 模块
构造实例.Queue(maxsize=0)
放入数据项.put(item, block=True, timeout=None)
获取数据项.get(block=True, timeout=None)
声明当前队列任务处理完毕.task_done()
队列所有项处理完毕前阻塞.join()

多进程
multiprocessing模块
充分运用多核、多CPU的计算能力,适用于计算密集型任务
concurrent.futures 模块
ThreadPoolExecutor
ProcessPoolExecutor

装饰器

自定义函数装饰器

def decorator(func):
	def wrapper(*args, **kwargs):
		return '<title>'+func(*args, **kwargs) +'</title>'
	return wrapper

@decorator
def get_text():
	return 'hello world!'

print(get_text())

结果

<title>hello world!</title>

装饰器就相当于把函数当参数传递给了装饰器,再执行装饰器的那个函数

类装饰器

class P:
	def __init__(self,func):
		self.func = func

	def __call__(self, *args, **kwargs):
		return '{' + self.func(*args, **kwargs) + '}'

@P
def get_text():
	return "helloworld"

print(get_text())

结果

{helloworld}

类装饰器和函数装饰器都能修饰一个函数,但如果是类的函数,建议用函数装饰器,用类装饰器会报错,处理比较麻烦

装饰器参数

装饰器参数,可以再让装饰器带参数,让函数更灵活

def tags(tag):
	def tag_decorator(func):
		def wrapper(*args, **kwargs):
			return f'<{tag}>{func(*args, **kwargs)}</{tag}>'
		return wrapper
	return tag_decorator

@tags('div')
def get_text():
	return "helloworld"

print(get_text())

结果

<div>helloworld</div>
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值