python多线程lock只对当前进程有影响

news2024/10/24 11:05:26

python threading模块lock锁除了对当前进程线程有影响,是否还对其它进程线程有影响
做了个测试验证对其它进程中线程没有影响
直接上脚本
1.py

import  threading,os
import  datetime,time
lock=threading.Lock()
def fun():
    global  lock
    lock.acquire()
    time.sleep(5)
    print(f'pid:{os.getpid()}-{datetime.datetime.now()}-hello world-{threading.get_ident()}',threading.current_thread().name)
    lock.release()
t1=[]
for i in range(10):
    t1.append(threading.Thread(target=fun,name=f'脚本1线程-{i}'))
for i in t1:
    i.start()


print("脚本1主线程结束",threading.get_ident())
print(f'当前进程ID:{os.getpid()}')

2.py

import  threading,os
import  datetime,time
def fun():
    time.sleep(5)
    print(f'pid:{os.getpid()}-{datetime.datetime.now()}-hello world-{threading.get_ident()}',threading.current_thread().name)

t1=[]
for i in range(5):
    t1.append(threading.Thread(target=fun,name=f'脚本2线程-{i}'))
for i in t1:
    i.start()

print("脚本2主线程结束",threading.get_ident())
print(f'当前进程ID:{os.getpid()}')

脚本1和2现在开始同时执行
脚本1执行结果

(python38) [root@mysql01 dtask]# python 1.py 
脚本1主线程结束 139891861677888
当前进程ID:18462
pid:18462-2024-10-23 13:36:37.872807-hello world-139891728090880 脚本1线程-0
pid:18462-2024-10-23 13:36:42.876340-hello world-139891648231168 脚本1线程-1
pid:18462-2024-10-23 13:36:47.884442-hello world-139891639838464 脚本1线程-2
pid:18462-2024-10-23 13:36:52.894117-hello world-139891631445760 脚本1线程-3
pid:18462-2024-10-23 13:36:57.894989-hello world-139891623053056 脚本1线程-4
pid:18462-2024-10-23 13:37:02.903469-hello world-139891614660352 脚本1线程-5
pid:18462-2024-10-23 13:37:07.909521-hello world-139891606267648 脚本1线程-6
pid:18462-2024-10-23 13:37:12.917250-hello world-139891597874944 脚本1线程-7
pid:18462-2024-10-23 13:37:17.924179-hello world-139891111360256 脚本1线程-8
pid:18462-2024-10-23 13:37:22.933354-hello world-139891102967552 脚本1线程-9

脚本2执行结果:

(python38) [root@mysql01 dtask]# python 2.py 
脚本2主线程结束 140367038760768
当前进程ID:18475
pid:18475-2024-10-23 13:36:39.900646-hello world-140366905173760 脚本2线程-0
pid:18475-2024-10-23 13:36:39.900939-hello world-140366896781056 脚本2线程-1
pid:18475-2024-10-23 13:36:39.900982-hello world-140366888388352 脚本2线程-2
pid:18475-2024-10-23 13:36:39.901013-hello world-140366879995648 脚本2线程-3
pid:18475-2024-10-23 13:36:39.901044-hello world-140366871602944 脚本2线程-4

可以看到脚本1和脚本2是两个进程,这两个单独进程子线程和主线程的进程ID都一致
进程1的线程lock锁对进程2线程lock锁没有影响,通过执行时间可以判断,这是通过两个单独python脚本文件执行看出
那么在一个python脚本中使用多进程然后每个进程进行多线程执行最后结论一致

import  threading,os,multiprocessing
import  datetime,time

lock=threading.Lock()
def fun():
    global  lock
    lock.acquire()
    time.sleep(5)
    print(f'{datetime.datetime.now()}-执行进程pid:{os.getpid()},父进程ID:{os.getppid()},进程名:{multiprocessing.current_process().name},线程ID:-{threading.get_ident()}','线程名',threading.current_thread().name)
    lock.release()
t1=[]
def multi():
    for i in range(10):
        t1.append(threading.Thread(target=fun,name=f'线程-{i}'))
    for i in t1:
        i.start()

p1=multiprocessing.Process(target=multi,name='进程1')
p2=multiprocessing.Process(target=multi,name='进程2')

p=[]
p.append(p1)
p.append(p2)
for i in p:
    i.start()
for i in p:
    i.join()
print("脚本主线程结束线程ID:",threading.get_ident(),'脚本主进程结束进程ID:',os.getpid())

运行结果

(python38) [root@mysql01 dtask]# python 1.py 
2024-10-23 14:26:25.964214-执行进程pid:21774,父进程ID:21772,进程名:进程2,线程ID:-140668388787968 线程名 线程-0
2024-10-23 14:26:25.964703-执行进程pid:21773,父进程ID:21772,进程名:进程1,线程ID:-140668388787968 线程名 线程-0
2024-10-23 14:26:30.970588-执行进程pid:21774,父进程ID:21772,进程名:进程2,线程ID:-140668380395264 线程名 线程-1
2024-10-23 14:26:30.970729-执行进程pid:21773,父进程ID:21772,进程名:进程1,线程ID:-140668380395264 线程名 线程-1
2024-10-23 14:26:35.976089-执行进程pid:21774,父进程ID:21772,进程名:进程2,线程ID:-140668299114240 线程名 线程-2
2024-10-23 14:26:35.976345-执行进程pid:21773,父进程ID:21772,进程名:进程1,线程ID:-140668299114240 线程名 线程-2
2024-10-23 14:26:40.982185-执行进程pid:21774,父进程ID:21772,进程名:进程2,线程ID:-140668290721536 线程名 线程-3
2024-10-23 14:26:40.982317-执行进程pid:21773,父进程ID:21772,进程名:进程1,线程ID:-140668290721536 线程名 线程-3
2024-10-23 14:26:45.987790-执行进程pid:21774,父进程ID:21772,进程名:进程2,线程ID:-140668282328832 线程名 线程-4
2024-10-23 14:26:45.987963-执行进程pid:21773,父进程ID:21772,进程名:进程1,线程ID:-140668282328832 线程名 线程-4
2024-10-23 14:26:50.994082-执行进程pid:21774,父进程ID:21772,进程名:进程2,线程ID:-140668273936128 线程名 线程-5
2024-10-23 14:26:50.994225-执行进程pid:21773,父进程ID:21772,进程名:进程1,线程ID:-140668273936128 线程名 线程-5
2024-10-23 14:26:55.999937-执行进程pid:21774,父进程ID:21772,进程名:进程2,线程ID:-140668265543424 线程名 线程-6
2024-10-23 14:26:56.000075-执行进程pid:21773,父进程ID:21772,进程名:进程1,线程ID:-140668265543424 线程名 线程-6
2024-10-23 14:27:01.005663-执行进程pid:21774,父进程ID:21772,进程名:进程2,线程ID:-140668257150720 线程名 线程-7
2024-10-23 14:27:01.005815-执行进程pid:21773,父进程ID:21772,进程名:进程1,线程ID:-140668257150720 线程名 线程-7
2024-10-23 14:27:06.011907-执行进程pid:21774,父进程ID:21772,进程名:进程2,线程ID:-140668248758016 线程名 线程-8
2024-10-23 14:27:06.012053-执行进程pid:21773,父进程ID:21772,进程名:进程1,线程ID:-140668248758016 线程名 线程-8
2024-10-23 14:27:11.016922-执行进程pid:21774,父进程ID:21772,进程名:进程2,线程ID:-140667829352192 线程名 线程-9
2024-10-23 14:27:11.017219-执行进程pid:21773,父进程ID:21772,进程名:进程1,线程ID:-140667829352192 线程名 线程-9
脚本主线程结束线程ID: 140668536698688 脚本主进程结束进程ID: 21772

可以看到同一个父进程衍生出来两个紫禁城,然后线程lock锁并没有产生影响对另外一个进程线程

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2222339.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

安装好的 Nginx 增加 nginx-module-vts 模块

目录 1. nginx-module-vts 准备 2.查看已安装的的 nginx 编译参数 3. 重新编译 nginx 添加 nginx-module-vts 模块 4. 验证 1. nginx-module-vts 准备 # 解压 unzip nginx-module-vts-master.zip # 将解压包移动到/usr/local/目录 mv nginx-module-vts-master /usr/local/ …

杭州威雅学校一席谈:企业家精神的传承

威雅一席谈 ABBEYTALK 《威雅一席谈》是杭州威雅学校为促进家校沟通推出的社区交流平台。我们将定期邀请家长代表分享自身经验与观点,通过真诚且深度的交谈探寻教育新契机。 本期一席谈,我们邀请了杭州威雅优秀学生家长Robin王先生。终身学习、工匠精神是…

Linux系统——dns域名解析

Linux系统——dns域名解析 一、dns域名解析介绍1、DNS核心概念1.1 区域 zone1.2 记录 record 二、DNS服务的配置1、正向解析的配置2、测试dns正常工作3、配置反向解析4、dns复制 三、DNS查询类型四、hosts文件的使用 一、dns域名解析介绍 dns,应用层协议 作用&…

arp代答观察

文章目录 代答和代理简述实验前提先不开启proxy代答的配置开启代答总结 代答和代理简述 ARP(地址解析协议)是在局域网中用于将IP地址映射到MAC地址的协议。在理解 ARP 代答和 ARP 代理之前,让我们先澄清一下 ARP 的基本工作原理。 ARP 代答&…

标题PLSQL 里面怎么在文件窗口下 ,创建文件夹,并做好常用sql语句的分类

标题PLSQL 里面怎么在文件窗口下 ,创建文件夹,并做好常用sql语句的分类? 效果如图: 标题打开plsql,找到文件窗口 找到,窗口下的这个类似文件夹带扳手的这个图标,打开, 打开后,定位…

十一、pico+Unity交互开发教程——手指触控交互(Poke Interaction)

一、XR Poke Interactor 交互包括发起交互的对象(Interactor)和可被交互的对象(Interactable)。XR Interaction Toolkit提供了XR Poke Interactor脚本用于实现Poke功能。在LeftHand Controller和RightHand Controller物体下创建名…

LeetCode做题笔记第202题:快乐数

题目描述 编写一个算法来判断一个数 n 是不是快乐数。 「快乐数」 定义为: 1.对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和。 2.然后重复这个过程直到这个数变为 1,也可能是 无限循环 但始终变不到 1。 3.如果这个过程 结…

「C/C++」C++ STL容器库 之 std::set 唯一键的集合容器

✨博客主页何曾参静谧的博客📌文章专栏「C/C」C/C程序设计📚全部专栏「VS」Visual Studio「C/C」C/C程序设计「UG/NX」BlockUI集合「Win」Windows程序设计「DSA」数据结构与算法「UG/NX」NX二次开发「QT」QT5程序设计「File」数据文件格式「PK」Parasoli…

小鹏汽车股价分析:看涨信号已出现,技术指标显示还有40%的上涨空间

猛兽财经核心观点: (1)小鹏汽车的股价过去几天有所回落。 (2)随着需求的上升,该公司的业务发展的还算不错。 (3)猛兽财经对小鹏汽车股价的技术分析:多头已经将目标指向15…

【通俗理解】Neurosymbolic AI——融合神经网络与符号推理的智慧之力

【通俗理解】Neurosymbolic AI——融合神经网络与符号推理的智慧之力 关键词提炼 #Neurosymbolic AI #神经网络 #符号推理 #感知能力 #逻辑能力 #认知水平 #智慧与力量 第一节:Neurosymbolic AI的类比与核心概念 Neurosymbolic AI就像是给神经网络这位“大力士”…

排序算法 —— 计数排序

目录 1.计数排序的思想 2.计数排序的实现 3.计数排序的分析 时间复杂度 空间复杂度 稳定性 优点 缺点 1.计数排序的思想 顾名思义,计数排序就是通过计数的方式来排序,其基本思想为: 开辟一个计数数组,统计每个数出现的次…

计算机毕业设计Hadoop+大模型在线教育大数据分析可视化 学情分析 课程推荐系统 机器学习 深度学习 人工智能 大数据毕业设计

一、研究背景和意义 “互联网”和大数据带来了网络教育的蓬勃发展,学习分析技术和自适应学习也在近年内得到了重大突破。在线教育是互联网技术与传统教育的结合,是当前中国教育信息化发展最快的领域,而当下最迫切的是有效整合教育资源和互联…

AJAX——使用 fetch 发送 AJAX 请求

1、fetch()函数属于全局函数,可以全局调用,返回的结果是一个 promise 对象。 2、语法: 3、参数 本文分享到此结束,欢迎大家评论区相互讨论学习,下一篇继续分享AJAX中同源策略的学习。

ChatGPT实现旅游推荐微信小程序

随着旅游行业的快速发展,个性化推荐已成为提升用户体验的重要手段。通过AI技术,提供一个智能旅游推荐小程序,使用户能够轻松获取定制化的旅行建议。 项目概述 项目目标 开发一个AI旅游推荐小程序,基于用户输入的旅行偏好&#…

Axure中继器单选、多选和重置

亲爱的小伙伴,在您浏览之前,烦请关注一下,在此深表感谢! 课程主题:Axure中继器单选、多选和重置 主要内容:根据查询条件,通过单选、多选和重置,从中继器中得到数据 应用场景&…

C++ 二叉树进阶:二叉搜索树

目录 二叉搜索树的概念 二叉搜索树的实现 基本结构 插入 1,当树是空树的时候 2,当树不为空的时候 3,纠正后的代码 查找 删除 1,左为空或右为空 2,左右都不为空 3,删除的完整代码: 二…

hadoop-Zookeeper安装

hadoop-Zookeeper安装 Ububtu18.04安装Zookeeper3.7.1 环境与版本 这里采用的ubuntu18.04环境的基本配置为: hostname 为master 用户名为hadoop 静态IP为 192.168.100.3 网关为 192.168.100.2 防火墙已经关闭 /etc/hosts已经配置全版本下载地址: htt…

Director3D: Real-world Camera Trajectory and 3DScene Generation from Text 论文解读

目录 一、概述 二、相关工作 1、文本到3D生成 2、3DGS 三、Director3D 1、Cinematographer 2、Decorator 3、Detailer 4、Loss 一、概述 该论文提出利用真实世界数据集,设计一个从文本生成真实世界3D场景和自适应相机轨迹的强大的开放世界文本到3D生成框架…

Git使用GUI界面实现任意历史版本对比

首先进入版本历史查看界面 标记某次提交 选择某次提交并和标记的提交对比 可以查看比较结果了,具体到每一个文件每一行代码

鸿蒙HarmonyOS NEXT 5.0开发(2)—— ArkUI布局组件

文章目录 布局Column:从上往下的布局Row:从左往右的布局Stack:堆叠布局Flex:自动换行或列 组件Swiper各种选择组件 华为官方教程B站视频教程 布局 主轴和交叉轴的概念: 对于Column布局而言,主轴是垂直方…