Python 多线程,多进程
文章目录
- 1 进程
- 1.1 基本应用
- 1.2 子进程做为主进程的守护进程
- 1.3 操作进程的常用方法
- 1.4 子进程拥有独立的内存空间
- 1.5 进程间的通信
- 1.6 进程池
- 2 线程
- 2.1 基本使用
- 2.2 本地线程
- 2.3 线程锁
- 2.4 死锁
- 2.5 递归锁(解决死锁)
- 2.6 信号量
- 2.7 事件对象
- 2.8 条件对象
任何一门语言都需要有多任务处理能力,Python自然也一样,有很多人诟病Python慢,Python慢也只是多线程的时候慢,如果你还没有使用多线程就说Python慢,那就是你的问题了,话说回来,为什么Python的多线程会慢呢,是因为CPython解释器的GIL锁的问题,Python的多线程直接调用的操作系统的多线程,也就是说Python的多线程是真的多线程,不是虚拟出来的,CPython在解释Python代码的过程中理论上单线程的,CPython会在多个操作系统线程上解释Python代码,这是Python慢的根本原因。如果你使用其他Python解释器就不会有这种问题,CPython也尝试去掉GIL锁,但是效率反而没有现在高。
说的有点远,对于Python来说,实现多任务的方式有三种,多进程,多线程和协程,只有多进程能够真正的并行,多线程和协程都是并发。
1 进程
python的内置multiprocessing包提供了调用多进程的接口。
1.1 基本应用
import time
import multiprocessingdef task(name):while True:print(f"Hello {name}")time.sleep(1)def main():p1 = multiprocessing.Process(target=task, args=("xiaoming",), name="xiaoming")p2 = multiprocessing.Process(target=task, args=("xiaohong",), name="xiaohong")p1.start()if p1.is_alive():print(f"{p1.name}-{p1.pid}")p2.start()if p2.is_alive():print(f"{p2.name}-{p2.pid}")if __name__ == '__main__':print(f"主进程开始:{multiprocessing.process.current_process().pid}-{multiprocessing.process.current_process().pid}")main()
这是最基本的应用,同一个任务需要两个进程共同执行。
1.2 子进程做为主进程的守护进程
有一些场景可能需要子进程守护主进程,比如,一款带北京音乐的游戏,游戏启动后背景音乐要跟着启动,游戏停止了,背景音乐自然也要停止,不能游戏停止了背景音乐还在继续。
class Game:def __init__(self, name):self.name = namedef screen(self):while True:print(f"玩{self.name}中。。。。")time.sleep(1)def bg_music(self):while True:print("背景音乐播放中。。。。")time.sleep(2)def main():game = Game("CS1.5", True)p_game = multiprocessing.Process(target=game.screen, daemon=True)p_mucis = multiprocessing.Process(target=game.bg_music, daemon=True)p_game.start()p_mucis.start()time.sleep(10)print("老婆回家了,赶紧收电脑")if __name__ == '__main__':main()
上面的例子有三条进程,主进程模拟玩了10秒钟游戏后停止,游戏子进程和背景音乐子进程是主进程的守护进程,主进程停止后,自动停止。
1.3 操作进程的常用方法
属性
p.name
p.pid
方法
p.is_alive() # 返回True False
p.start() # 启动进程
p.join() # 主进程等待子进程执行结束
p.terminate() # 终止进程
p.kill() # 杀死进程
1.4 子进程拥有独立的内存空间
进程是操作系统分配资源的最小单位,每个进程拥有独立的地址空间。
import multiprocessingname = "哈利波特"def show():print(name)print(f"子进程{multiprocessing.process.current_process().pid}内,name的内存地址为{id(name)}")def main():p1 = multiprocessing.Process(target=show)p2 = multiprocessing.Process(target=show)p1.start()p2.start()print(f"主进程内:name的内存地址:{id(name)}")if __name__ == '__main__':main()
为了区分明显,这里先剧透一下多线程,同一个进程中的多个线程共享同一个内存地址空间。
import threadingname = "哈利波特"def show():print(name)print(f"子线程{threading.current_thread().ident}内,name的内存地址为{id(name)}")def main():t1 = threading.Thread(target=show)t2 = threading.Thread(target=show)t1.start()t2.start()print(f"主线程内:name的内存地址:{id(name)}")if __name__ == '__main__':main()
1.5 进程间的通信
前面的例子基本上都是一个进程就做一件事情,但是在实际的开发过程中,大多数都是进程之间配合完成工作的,常用的生产者消费者模型,多进程之间的通信可以使用队列实现。
import time
import multiprocessing
import randomdef product(q, delay):while True:if q.full():print("生产力饱和,减慢生产速度")delay = 10else:x = random.randint(1, 100)print(f"生产者生产{x}")q.put(x)delay = 1time.sleep(delay)def consume(q, delay):while True:if q.empty():print("消费速度快,减速消费")delay = 10else:result = q.get()print(f"消费者消费: {result}")delay=1time.sleep(delay)def main():q = multiprocessing.Queue(maxsize=10)p_pro = multiprocessing.Process(target=product, args=(q, 1))p_con = multiprocessing.Process(target=consume, args=(q, 1))p_pro.start()p_con.start()if __name__ == '__main__':main()
注意这里的队列不要使用queue,Queue,这个队列不支持多线程,会报错
1.6 进程池
创建进程销毁进程都会占用系统资源,在不清楚需要多少进程的情况下,比如web请求,不知道什么时候来的请求会多,这种情况下可以使用池化技术,创建一个任务队列,所有的任务都在任务队列中排队,进程池每次处理指定数量的任务,进程循环利用,省去了创建和销毁的性能开销。
标准库中的这两个模块提供了进程池和线程池的支持:
from concurrent.futures import ThreadPoolExecutor, ProcessPoolExecutor
2 线程
进程是操作系统调度资源的最小单元,线程是CPU调度的最小单元,同一个进程中可以有多个线程,多个线程共享同一片地址空间
2.1 基本使用
threading模块的Thread类提供Python多线程高级别API
import threadingdef sing():while True:print("singing")def dance():while True:print("dancing")def main():threading.Thread(target=sing).start()threading.Thread(target=dance).start()if __name__ == '__main__':main()
线程与进程相同的定义就不重复,可以模仿进程操作
2.2 本地线程
本地线程就是每个线程拥有一个隔离的内存空间。多线程不会互相干扰‘
2.3 线程锁
我只是模拟了一下多线程争夺全局变量的问题,实际中不会用多线程做这种减法
import time
import threadingcount = 10def decr():global counttemp = count # 模拟延时,0.01s对于人类来说非常短,但是对于CPU来讲可以做很多事情,# 当遇到IO阻塞后,操作系统会切换到别的线程,这时候,count还没有减去1,# 所以10个线程拿到的count数据都是10,别减了10次还是9 ,这是明显不对的time.sleep(0.01) count = temp - 1print(f"==当前线程id{threading.current_thread().ident}==count = {count}\n")ts = []for i in range(10):t = threading.Thread(target=decr)t.start()ts.append(t)for t in ts:t.join() # 主线程阻塞等待子线程执行结束后再结束
"""
==当前线程id2332==count = 9
==当前线程id12000==count = 9
==当前线程id8972==count = 9
==当前线程id13424==count = 9
==当前线程id12016==count = 9
==当前线程id3620==count = 9
==当前线程id12740==count = 9
==当前线程id10176==count = 9
==当前线程id12116==count = 9
==当前线程id1052==count = 9
"""
使用锁,一个线程对一段代码上锁后,只有这个线程解锁后,其他线程才能继续操作
import time
import threadingcount = 10lock = threading.Lock()def decr():try:lock.acquire() # 获取锁global counttemp = counttime.sleep(0.01)count = temp - 1print(f"==当前线程id{threading.current_thread().ident}==count = {count}\n")finally:lock.release() # 释放锁 支持with上下文管理器ts = []for i in range(10):t = threading.Thread(target=decr)t.start()ts.append(t)for t in ts:t.join() # 主线程阻塞等待子线程执行结束后再结束"""
==当前线程id10828==count = 9
==当前线程id1044==count = 8
==当前线程id4116==count = 7
==当前线程id1624==count = 6
==当前线程id660==count = 5
==当前线程id2748==count = 4
==当前线程id6552==count = 3
==当前线程id6540==count = 2
==当前线程id2836==count = 1
==当前线程id7304==count = 0
"""
2.4 死锁
import time
import threading# 创建两把锁
lockA = threading.Lock()
lockB = threading.Lock()a = 0
b = 0def taskA():global a, blockA.acquire()temp = aprint("变量a上锁")lockB.acquire()temp_ = bprint("变量b上锁")lockB.release()print("变量b释放锁")lockA.release()print("变量a释放锁")# taskA 抢a锁的时候,刚好taskB抢b锁
def taskB():global a, blockB.acquire()time.sleep(1)temp = bprint("变量b上锁")lockA.acquire()temp_ = aprint("变量a上锁")lockB.release()print("变量a释放锁")lockA.release()print("变量b释放锁")def main():taskA()taskB()ts = []for i in range(10):t = threading.Thread(target=main)t.start()ts.append(t)for t in ts:t.join() # 主线程阻塞等待子线程执行结束后再结束
2.5 递归锁(解决死锁)
当两个线程同时争一把锁的情况下,就会出现死锁,程序会一直阻塞住,不往下运行了,所以程序中一定要避免使用死锁,递归锁可以解决这个问题,RLock本身有一个计数器,如果碰到acquire,那么计数器+1,如果计数器大于0,那么其他线程无法获取锁,如果碰到release,计数器-1
import time
import threading# 创建两把锁
lockR = threading.RLock()a = 0
b = 0def taskA():global a, blockR.acquire()temp = aprint("变量a上锁")lockR.acquire()temp_ = bprint("变量b上锁")lockR.release()print("变量b释放锁")lockR.release()print("变量a释放锁")# taskA 抢a锁的时候,刚好taskB抢b锁
def taskB():global a, blockR.acquire()time.sleep(1)temp = bprint("变量b上锁")lockR.acquire()temp_ = aprint("变量a上锁")lockR.release()print("变量a释放锁")lockR.release()print("变量b释放锁")def main():taskA()taskB()ts = []for i in range(10):t = threading.Thread(target=main)t.start()ts.append(t)for t in ts:t.join() # 主线程阻塞等待子线程执行结束后再结束
2.6 信号量
信号量本身也是一种锁,在同一时刻,只能有设定数量的线程执行操作
import threading
import timesem = threading.Semaphore(5)def task():with sem:print("Hello")time.sleep(2)ts = []for i in range(100):t = threading.Thread(target=task)t.start()ts.append(t)for t in ts:t.join()
上面的简单示例没2s打印5次hello。
2.7 事件对象
生活中的小常识,必须要切好菜之后才能炒菜,菜没切好就要等着,对于线程来说就是阻塞住。
Event对象提供了简单的线程通信方式,
event.isSet() #返回event的状态值;初始值为False
event.wait() #如果 event.isSet()==False将阻塞线程;
event.set() #设置event的状态值为True,所有阻塞池的线程激活进入就绪状态, 等待操作系统调度;
event.clear() #恢复event的状态值为False。
import threading
import timeevent = threading.Event()def qiecai():print("开始切菜")time.sleep(5)event.isSet() or event.set()def zuofan():print("等待切菜。。。")event.wait()print("菜切好了,开始炒菜")time.sleep(3)print("出锅")event.clear()t1 = threading.Thread(target=qiecai)
t2 = threading.Thread(target=zuofan)t1.start()
t2.start()t1.join()
t2.join()
2.8 条件对象
acquire(*args)
请求底层锁。此方法调用底层锁的相应方法,返回值是底层锁相应方法的返回值。release()
释放底层锁。此方法调用底层锁的相应方法。没有返回值。wait(timeout=None)
等待直到被通知或发生超时。如果线程在调用此方法时没有获得锁,将会引发 RuntimeError 异常。这个方法释放底层锁,然后阻塞,直到在另外一个线程中调用同一个条件变量的 notify() 或 notify_all() 唤醒它,或者直到可选的超时发生。一旦被唤醒或者超时,它重新获得锁并返回。当提供了 timeout 参数且不是 None 时,它应该是一个浮点数,代表操作的超时时间,以秒为单位(可以为小数)。当底层锁是个 RLock ,不会使用它的 release() 方法释放锁,因为当它被递归多次获取时,实际上可能无法解锁。相反,使用了 RLock 类的内部接口,即使多次递归获取它也能解锁它。 然后,在重新获取锁时,使用另一个内部接口来恢复递归级别。返回 True ,除非提供的 timeout 过期,这种情况下返回 False。在 3.2 版更改: 很明显,方法总是返回 None。wait_for(predicate, timeout=None)
等待,直到条件计算为真。 predicate 应该是一个可调用对象而且它的返回值可被解释为一个布尔值。可以提供 timeout 参数给出最大等待时间。这个实用方法会重复地调用 wait() 直到满足判断式或者发生超时。返回值是判断式最后一个返回值,而且如果方法发生超时会返回 False 。忽略超时功能,调用此方法大致相当于编写:while not predicate():cv.wait()
因此,规则同样适用于 wait() :锁必须在被调用时保持获取,并在返回时重新获取。 随着锁定执行判断式。notify(n=1)
默认唤醒一个等待这个条件的线程。如果调用线程在没有获得锁的情况下调用这个方法,会引发 RuntimeError 异常。这个方法唤醒最多 n 个正在等待这个条件变量的线程;如果没有线程在等待,这是一个空操作。当前实现中,如果至少有 n 个线程正在等待,准确唤醒 n 个线程。但是依赖这个行为并不安全。未来,优化的实现有时会唤醒超过 n 个线程。注意:被唤醒的线程并没有真正恢复到它调用的 wait() ,直到它可以重新获得锁。 因为 notify() 不释放锁,其调用者才应该这样做。notify_all()
唤醒所有正在等待这个条件的线程。这个方法行为与 notify() 相似,但并不只唤醒单一线程,而是唤醒所有等待线程。如果调用线程在调用这个方法时没有获得锁,会引发 RuntimeError 异常。notifyAll 方法是此方法的已弃用别名。
import threading
import timecount = 500
con = threading.Condition()class Producer(threading.Thread):# 生产者函数def run(self):global countwhile True:if con.acquire():# 当count 小于等于1000 的时候进行生产if count > 1000:con.wait()else:count = count + 100msg = self.name + ' produce 100, count=' + str(count)print(msg)# 完成生成后唤醒waiting状态的线程,# 从waiting池中挑选一个线程,通知其调用acquire方法尝试取到锁con.notify()con.release()time.sleep(1)class Consumer(threading.Thread):# 消费者函数def run(self):global countwhile True:# 当count 大于等于100的时候进行消费if con.acquire():if count < 100:con.wait()else:count = count - 5msg = self.name + ' consume 5, count=' + str(count)print(msg)con.notify()# 完成生成后唤醒waiting状态的线程,# 从waiting池中挑选一个线程,通知其调用acquire方法尝试取到锁con.release()time.sleep(1)def test():for i in range(2):p = Producer()p.start()for i in range(5):c = Consumer()c.start()if __name__ == '__main__':test()
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
相关文章
- 598.范围求和
题目: 给定一个初始元素全部为 0,大小为 m*n 的矩阵 M 以及在 M 上的一系列更新操作。操作用二维数组表示,其中的每个操作用一个含有两个正整数 a 和 b 的数组表示,含义是将所有符合 0 < i < a 以及 0 < j < b 的元素…...
2024/4/14 20:36:53 - 光纤
光纤收发器:无协议,透明传输,电光转换,价格便宜,用来拓展以太网。 光端机:分为发送端和接收端,通常用于视频监控。既可以传输视频,也可传输音频,485,网络&am…...
2024/4/7 17:10:26 - 初时IP核
这里介绍了我使用的第一个ip核:计数器在quartus中找到counte ip核设置后并编写测试文件,借鉴了小梅哥的材料。上代码: timescale 1ns/1ns define clock_period 20module counter_ip;reg cin;reg clk;wire cout;wire [3:0] q;counter u_counter(.c…...
2024/4/14 20:36:58 - 2021-11-07学习记录4
本周C语言大学课堂继续讲了关于循环结构的用法以及实际用途,主要讲解while和do while语句。 while(表达式) 一条复合语句; do 语句段; while(表达式); 从上面我们可以看出来,while语句是先判断循…...
2024/4/14 20:37:08 - MFC CTreeGridCtrl实现表格嵌套
CTreeGridCtrl是继承自CGridCtrl而来,实现了Grid中嵌套子的功能,单元格中可以包含check控件,button控件,combox控件等,简单的实例如下: CTreeGridCtrl m_Grid; { m_Grid.EnableDragAndDrop(TRUE)…...
2024/4/20 0:09:46 - 21天活动Zyf打卡第十二天Promise9913,范围求和 II
提交结果执行用时内存消耗语言提交时间备注通过36 ms15.5 MBPython32021/11/07 09:58 题目描述: 解题思路: class Solution:def maxCount(self, m: int, n: int, ops: List[List[int]]) -> int:mina, minb m, nfor a, b in ops:mina min(mina, a)…...
2024/4/5 5:35:24 - 15000 字的 MySQL 速查手册
SQL基础知识整理 select 查询结果,如: [学号,平均成绩:组函数avg(成绩)] from 从哪张表中查找数据,如:[涉及到成绩:成绩表score] where 查询条件,如:[b.课程号0003 and b.成绩>80] group by 分组,如:…...
2024/4/14 20:37:13 - Angularjs在父级获取子级变量
angularjs中想在父级controller获取子级controller的变量值可以用emit和on方法,在子级controller,调用$emit方法产生一个事件,$emit函数有两个参数,第一个参数是事件名称,第二个是要传递的数据,比如我想向父…...
2024/4/18 12:18:13 - 通过自定义阻塞队列触发ThreadPoolExecutor创建非核心线程执行无界队列中的任务
Java项目常使用ThreadPoolExecutor创建线程池,核心参数包含corePoolSize,maximumPoolSize,workQueue。我们希望构建的线程池能满足如下条件: 线程数量可控。需要设置一个最大线程数量maximumPoolSize,防止线程无限制创…...
2024/4/18 10:06:33 - 1057:简单计算器
【题目描述】 一个最简单的计算器,支持, -, *, / 四种运算。仅需考虑输入输出为整数的情况,数据和运算结果不会超过int表示的范围。然而: 1. 如果出现除数为0的情况,则输出:Divided by zero! 2. 如果出现无效的操作符(…...
2024/5/1 19:31:42 - css第一部分学习
一 1 - 1. css规则由两个主要的部分构成:选择器以及一条或多条声明, 选择器就是根据不同需求把不同的标签选出来这就是选择器的作用 1 - 2 . 选择器分为基础选择器和复合选择器 二 基础选择器分为四个,标签选择器,类选择器&#x…...
2024/4/14 20:37:34 - 基本算法总结篇
基本算法总结篇位运算飞行员兄弟解题思路:技巧递归分形分治平面最近点对二分防线赶牛入圈离散化中位数糖果传递【环形纸牌均分问题】士兵贪心耍杂技的牛任务前缀和最大子矩阵的和(二维列前缀和)位运算 飞行员兄弟 题目链接 解题思路: 对于…...
2024/4/14 20:38:14 - Linux C - Makefile (一)
本文为Makefile学习笔记,知识点根据个人需要摘取、总结,来自 http://c.biancheng.net/makefile/。 Makefile 1. Makefile 文件是什么? Makefile 可以简单的认为是一个工程文件的编译规则,描述了整个工程的编译和链接等规则。Ma…...
2024/4/14 20:38:04 - C++ 基本框架
C是C语言的继承,它既可以进行C语言的过程化程序设计,又可以进行以抽象数据类型为特点的基于对象的程序设计,还可以进行以继承和多态为特点的面向对象的程序设计。 自己本身也是个C入门菜鸟,下图就是c的基本框架,以便于…...
2024/4/18 10:02:39 - SAP 计划策略组40、50对比分析
PP的策略常用的是按单生产和按库存生产两大类,其中有一些是疑似两种功能混和的。策略的应用取决于企业或者产品的生产模式,老师说,是金字塔型,倒金塔型,凹凸型等等。 SAP的策略很多,按库存MTS:…...
2024/4/14 20:37:49 - 1.1 DICOM协议简介及应用
1. 协议简介 DICOM(Digital Imaging and Communications in Medicine)即医学数字成像和通信,从名字可以看出DICOM协议包含两部分,即成像部分和通信部分。 Dicom是个标准集,而不是单个标准 DICOM标准中涵盖了医学数…...
2024/4/7 3:16:37 - 汇编语言实现人体感应灯
ORG 0000HLJMP MAINORG 0003H ;定时器中断0AJMP WAITKEYBEGINORG 001BH ;定时器中断1AJMP T1INTORG 0100H ;*********************************************************************************************************************…...
2024/4/26 16:59:45 - WordPress网站主题首页添加四格小工具教程
效果预览: 第一步:引入JS <script src"https://use.fontawesome.com/865314f53c.js"></script>全选代码 复制 第二步:将下面代码放到需要展示的位置 <div class"section"> <div class"hom…...
2024/4/18 22:13:31 - 可解释性与积分梯度 Integrated Gradients
积分梯度是一种神经网络可解释性方法此方法首先在论文《Gradients of Counterfactuals》中提出,后来 《Axiomatic Attribution for Deep Networks》再次介绍了它,这已经是2016~2017年间的工作了此方法已得到较多应用,但是也有一些…...
2024/4/18 16:55:37 - 【图像检测】基于霍夫变换 Hough变换实现图片车道线检测matlab代码
1 简介 本文提出了一种新的基于霍夫变换的复杂情况下车道线检测的算法,这个算法能够成功在夜晚,白天,有阴影,车道线磨损不太严重等复杂情况下检测出车道线.传统的车道线检测算法主要为直接在图像中进行霍夫变换,这种算法实时性差,计算量大.本文提出的算法将先对原图像进行处理…...
2024/4/16 17:42:32
最新文章
- 【idea-sprongboot项目】在linux服务器上纯远程开发方式
继上一篇博客【idea-sprongboot项目】SSH连接云服务器进行远程开发-CSDN博客 目录 五、远程开发方式 2)纯远程开发方式 步骤 五、远程开发方式 2)纯远程开发方式 实现原理, 步骤 (1)首先,关闭当前正在…...
2024/5/5 10:43:32 - 梯度消失和梯度爆炸的一些处理方法
在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言,在此感激不尽。 权重和梯度的更新公式如下: w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...
2024/3/20 10:50:27 - matlab 轨迹生成函数
文章目录 jtrajctrajmstrajmtrajtpolylspbtrinterp用例参考链接jtraj 计算两个构型之间的关节空间轨迹 [q, qd, qdd] = jtraj(q0, qf, m)是关节空间轨迹q(MxN),其中关节坐标从q0(1xN)变化到qf(1xN)。使用五次(5阶)多项式,并默认速度和加速度为零边界条件。假设时间以m步从0…...
2024/5/3 2:19:44 - c# wpf XmlDataProvider 简单试验
1.概要 2.代码 <Window x:Class"WpfApp2.Window12"xmlns"http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x"http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d"http://schemas.microsoft.com/expression/blend…...
2024/5/1 6:51:36 - 利用Spark将Kafka数据流写入HDFS
利用Spark将Kafka数据流写入HDFS 在当今的大数据时代,实时数据处理和分析变得越来越重要。Apache Kafka作为一个分布式流处理平台,已经成为处理实时数据的事实标准。而Apache Spark则是一个强大的大数据处理框架,它提供了对数据进行复杂处理…...
2024/4/30 15:37:05 - 【外汇早评】美通胀数据走低,美元调整
原标题:【外汇早评】美通胀数据走低,美元调整昨日美国方面公布了新一期的核心PCE物价指数数据,同比增长1.6%,低于前值和预期值的1.7%,距离美联储的通胀目标2%继续走低,通胀压力较低,且此前美国一季度GDP初值中的消费部分下滑明显,因此市场对美联储后续更可能降息的政策…...
2024/5/4 23:54:56 - 【原油贵金属周评】原油多头拥挤,价格调整
原标题:【原油贵金属周评】原油多头拥挤,价格调整本周国际劳动节,我们喜迎四天假期,但是整个金融市场确实流动性充沛,大事频发,各个商品波动剧烈。美国方面,在本周四凌晨公布5月份的利率决议和新闻发布会,维持联邦基金利率在2.25%-2.50%不变,符合市场预期。同时美联储…...
2024/5/4 23:54:56 - 【外汇周评】靓丽非农不及疲软通胀影响
原标题:【外汇周评】靓丽非农不及疲软通胀影响在刚结束的周五,美国方面公布了新一期的非农就业数据,大幅好于前值和预期,新增就业重新回到20万以上。具体数据: 美国4月非农就业人口变动 26.3万人,预期 19万人,前值 19.6万人。 美国4月失业率 3.6%,预期 3.8%,前值 3…...
2024/5/4 23:54:56 - 【原油贵金属早评】库存继续增加,油价收跌
原标题:【原油贵金属早评】库存继续增加,油价收跌周三清晨公布美国当周API原油库存数据,上周原油库存增加281万桶至4.692亿桶,增幅超过预期的74.4万桶。且有消息人士称,沙特阿美据悉将于6月向亚洲炼油厂额外出售更多原油,印度炼油商预计将每日获得至多20万桶的额外原油供…...
2024/5/4 23:55:17 - 【外汇早评】日本央行会议纪要不改日元强势
原标题:【外汇早评】日本央行会议纪要不改日元强势近两日日元大幅走强与近期市场风险情绪上升,避险资金回流日元有关,也与前一段时间的美日贸易谈判给日本缓冲期,日本方面对汇率问题也避免继续贬值有关。虽然今日早间日本央行公布的利率会议纪要仍然是支持宽松政策,但这符…...
2024/5/4 23:54:56 - 【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响
原标题:【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响近日伊朗局势升温,导致市场担忧影响原油供给,油价试图反弹。此时OPEC表态稳定市场。据消息人士透露,沙特6月石油出口料将低于700万桶/日,沙特已经收到石油消费国提出的6月份扩大出口的“适度要求”,沙特将满…...
2024/5/4 23:55:05 - 【外汇早评】美欲与伊朗重谈协议
原标题:【外汇早评】美欲与伊朗重谈协议美国对伊朗的制裁遭到伊朗的抗议,昨日伊朗方面提出将部分退出伊核协议。而此行为又遭到欧洲方面对伊朗的谴责和警告,伊朗外长昨日回应称,欧洲国家履行它们的义务,伊核协议就能保证存续。据传闻伊朗的导弹已经对准了以色列和美国的航…...
2024/5/4 23:54:56 - 【原油贵金属早评】波动率飙升,市场情绪动荡
原标题:【原油贵金属早评】波动率飙升,市场情绪动荡因中美贸易谈判不安情绪影响,金融市场各资产品种出现明显的波动。随着美国与中方开启第十一轮谈判之际,美国按照既定计划向中国2000亿商品征收25%的关税,市场情绪有所平复,已经开始接受这一事实。虽然波动率-恐慌指数VI…...
2024/5/4 23:55:16 - 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试
原标题:【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试美国和伊朗的局势继续升温,市场风险情绪上升,避险黄金有向上突破阻力的迹象。原油方面稍显平稳,近期美国和OPEC加大供给及市场需求回落的影响,伊朗局势并未推升油价走强。近期中美贸易谈判摩擦再度升级,美国对中…...
2024/5/4 23:54:56 - 【原油贵金属早评】市场情绪继续恶化,黄金上破
原标题:【原油贵金属早评】市场情绪继续恶化,黄金上破周初中国针对于美国加征关税的进行的反制措施引发市场情绪的大幅波动,人民币汇率出现大幅的贬值动能,金融市场受到非常明显的冲击。尤其是波动率起来之后,对于股市的表现尤其不安。隔夜美国股市出现明显的下行走势,这…...
2024/5/4 18:20:48 - 【外汇早评】美伊僵持,风险情绪继续升温
原标题:【外汇早评】美伊僵持,风险情绪继续升温昨日沙特两艘油轮再次发生爆炸事件,导致波斯湾局势进一步恶化,市场担忧美伊可能会出现摩擦生火,避险品种获得支撑,黄金和日元大幅走强。美指受中美贸易问题影响而在低位震荡。继5月12日,四艘商船在阿联酋领海附近的阿曼湾、…...
2024/5/4 23:54:56 - 【原油贵金属早评】贸易冲突导致需求低迷,油价弱势
原标题:【原油贵金属早评】贸易冲突导致需求低迷,油价弱势近日虽然伊朗局势升温,中东地区几起油船被袭击事件影响,但油价并未走高,而是出于调整结构中。由于市场预期局势失控的可能性较低,而中美贸易问题导致的全球经济衰退风险更大,需求会持续低迷,因此油价调整压力较…...
2024/5/4 23:55:17 - 氧生福地 玩美北湖(上)——为时光守候两千年
原标题:氧生福地 玩美北湖(上)——为时光守候两千年一次说走就走的旅行,只有一张高铁票的距离~ 所以,湖南郴州,我来了~ 从广州南站出发,一个半小时就到达郴州西站了。在动车上,同时改票的南风兄和我居然被分到了一个车厢,所以一路非常愉快地聊了过来。 挺好,最起…...
2024/5/4 23:55:06 - 氧生福地 玩美北湖(中)——永春梯田里的美与鲜
原标题:氧生福地 玩美北湖(中)——永春梯田里的美与鲜一觉醒来,因为大家太爱“美”照,在柳毅山庄去寻找龙女而错过了早餐时间。近十点,向导坏坏还是带着饥肠辘辘的我们去吃郴州最富有盛名的“鱼头粉”。说这是“十二分推荐”,到郴州必吃的美食之一。 哇塞!那个味美香甜…...
2024/5/4 23:54:56 - 氧生福地 玩美北湖(下)——奔跑吧骚年!
原标题:氧生福地 玩美北湖(下)——奔跑吧骚年!让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 啊……啊……啊 两…...
2024/5/4 23:55:06 - 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!
原标题:扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!扒开伪装医用面膜,翻六倍价格宰客!当行业里的某一品项火爆了,就会有很多商家蹭热度,装逼忽悠,最近火爆朋友圈的医用面膜,被沾上了污点,到底怎么回事呢? “比普通面膜安全、效果好!痘痘、痘印、敏感肌都能用…...
2024/5/5 8:13:33 - 「发现」铁皮石斛仙草之神奇功效用于医用面膜
原标题:「发现」铁皮石斛仙草之神奇功效用于医用面膜丽彦妆铁皮石斛医用面膜|石斛多糖无菌修护补水贴19大优势: 1、铁皮石斛:自唐宋以来,一直被列为皇室贡品,铁皮石斛生于海拔1600米的悬崖峭壁之上,繁殖力差,产量极低,所以古代仅供皇室、贵族享用 2、铁皮石斛自古民间…...
2024/5/4 23:55:16 - 丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者
原标题:丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者【公司简介】 广州华彬企业隶属香港华彬集团有限公司,专注美业21年,其旗下品牌: 「圣茵美」私密荷尔蒙抗衰,产后修复 「圣仪轩」私密荷尔蒙抗衰,产后修复 「花茵莳」私密荷尔蒙抗衰,产后修复 「丽彦妆」专注医学护…...
2024/5/4 23:54:58 - 广州械字号面膜生产厂家OEM/ODM4项须知!
原标题:广州械字号面膜生产厂家OEM/ODM4项须知!广州械字号面膜生产厂家OEM/ODM流程及注意事项解读: 械字号医用面膜,其实在我国并没有严格的定义,通常我们说的医美面膜指的应该是一种「医用敷料」,也就是说,医用面膜其实算作「医疗器械」的一种,又称「医用冷敷贴」。 …...
2024/5/4 23:55:01 - 械字号医用眼膜缓解用眼过度到底有无作用?
原标题:械字号医用眼膜缓解用眼过度到底有无作用?医用眼膜/械字号眼膜/医用冷敷眼贴 凝胶层为亲水高分子材料,含70%以上的水分。体表皮肤温度传导到本产品的凝胶层,热量被凝胶内水分子吸收,通过水分的蒸发带走大量的热量,可迅速地降低体表皮肤局部温度,减轻局部皮肤的灼…...
2024/5/4 23:54:56 - 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...
解析如下:1、长按电脑电源键直至关机,然后再按一次电源健重启电脑,按F8健进入安全模式2、安全模式下进入Windows系统桌面后,按住“winR”打开运行窗口,输入“services.msc”打开服务设置3、在服务界面,选中…...
2022/11/19 21:17:18 - 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。
%读入6幅图像(每一幅图像的大小是564*564) f1 imread(WashingtonDC_Band1_564.tif); subplot(3,2,1),imshow(f1); f2 imread(WashingtonDC_Band2_564.tif); subplot(3,2,2),imshow(f2); f3 imread(WashingtonDC_Band3_564.tif); subplot(3,2,3),imsho…...
2022/11/19 21:17:16 - 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...
win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面,在等待界面中我们需要等待操作结束才能关机,虽然这比较麻烦,但是对系统进行配置和升级…...
2022/11/19 21:17:15 - 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...
有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows,请勿关闭计算机”的提示,要过很久才能进入系统,有的用户甚至几个小时也无法进入,下面就教大家这个问题的解决方法。第一种方法:我们首先在左下角的“开始…...
2022/11/19 21:17:14 - win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...
置信有很多用户都跟小编一样遇到过这样的问题,电脑时发现开机屏幕显现“正在配置Windows Update,请勿关机”(如下图所示),而且还需求等大约5分钟才干进入系统。这是怎样回事呢?一切都是正常操作的,为什么开时机呈现“正…...
2022/11/19 21:17:13 - 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...
Win7系统开机启动时总是出现“配置Windows请勿关机”的提示,没过几秒后电脑自动重启,每次开机都这样无法进入系统,此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一:开机按下F8,在出现的Windows高级启动选…...
2022/11/19 21:17:12 - 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...
有不少windows10系统用户反映说碰到这样一个情况,就是电脑提示正在准备windows请勿关闭计算机,碰到这样的问题该怎么解决呢,现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法:1、2、依次…...
2022/11/19 21:17:11 - 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...
今天和大家分享一下win7系统重装了Win7旗舰版系统后,每次关机的时候桌面上都会显示一个“配置Windows Update的界面,提示请勿关闭计算机”,每次停留好几分钟才能正常关机,导致什么情况引起的呢?出现配置Windows Update…...
2022/11/19 21:17:10 - 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...
只能是等着,别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚,只能是考虑备份数据后重装系统了。解决来方案一:管理员运行cmd:net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...
2022/11/19 21:17:09 - 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?
原标题:电脑提示“配置Windows Update请勿关闭计算机”怎么办?win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢?一般的方…...
2022/11/19 21:17:08 - 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...
关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!关机提示 windows7 正在配…...
2022/11/19 21:17:05 - 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...
钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...
2022/11/19 21:17:05 - 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...
前几天班里有位学生电脑(windows 7系统)出问题了,具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面,长时间没反应,无法进入系统。这个问题原来帮其他同学也解决过,网上搜了不少资料&#x…...
2022/11/19 21:17:04 - 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...
本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法,并在最后教给你1种保护系统安全的好方法,一起来看看!电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中,添加了1个新功能在“磁…...
2022/11/19 21:17:03 - 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...
许多用户在长期不使用电脑的时候,开启电脑发现电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机。。.这要怎么办呢?下面小编就带着大家一起看看吧!如果能够正常进入系统,建议您暂时移…...
2022/11/19 21:17:02 - 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...
配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!配置windows update失败 还原更改 请勿关闭计算机&#x…...
2022/11/19 21:17:01 - 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...
不知道大家有没有遇到过这样的一个问题,就是我们的win7系统在关机的时候,总是喜欢显示“准备配置windows,请勿关机”这样的一个页面,没有什么大碍,但是如果一直等着的话就要两个小时甚至更久都关不了机,非常…...
2022/11/19 21:17:00 - 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...
当电脑出现正在准备配置windows请勿关闭计算机时,一般是您正对windows进行升级,但是这个要是长时间没有反应,我们不能再傻等下去了。可能是电脑出了别的问题了,来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...
2022/11/19 21:16:59 - 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...
我们使用电脑的过程中有时会遇到这种情况,当我们打开电脑之后,发现一直停留在一个界面:“配置Windows Update失败,还原更改请勿关闭计算机”,等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢࿰…...
2022/11/19 21:16:58 - 如何在iPhone上关闭“请勿打扰”
Apple’s “Do Not Disturb While Driving” is a potentially lifesaving iPhone feature, but it doesn’t always turn on automatically at the appropriate time. For example, you might be a passenger in a moving car, but your iPhone may think you’re the one dri…...
2022/11/19 21:16:57