如何理解同一进程下的线程不需要进行通讯的概念
如题,如何理解这区别之中的第二条同一进程下的不同线程之间需要通讯不需要使用通讯这句话?
之前的课程中也特意去讲了进程之间创建队列
import threading
q = queue.Queue()
为什么总结里面说明统一进程下的线程之间不需要进行通讯,那么这些线程之间是如何进行数据传输的呢?
9
收起
正在回答
1回答
同学,你好!第二条意思是进程之间数据是不共享的,若想实现共享数据需要用进程间的通信方法才能实现数据共享,而线程之间本身就可以实现数据共享的,所以不需要其他的通信方式实现数据共享
# _*_ coding:utf-8 _*_ from threading import Thread # 导入线程 import time def plus(): print("-------子线程1开始---------") global g_num # 定义全局变量 g_num += 50 # 全局变量值加50 print("g_num is %d" % g_num) print("-------子线程1结束---------") def minus(): time.sleep(2) print("-------子线程2开始---------") global g_num # 定义全局变量 g_num -= 50 # 全局变量值减50 print("g_num is %d" % g_num) print("-------子线程2结束---------") g_num = 100 # 定义一个全局变量 if __name__ == "__main__": print("----------主线程开始-------------") print("g_num is %d" % g_num) t1 = Thread(target=plus) # 实例化线程t1 t2 = Thread(target=minus) # 实例化线程t2 t1.start() # 开启线程t1 t2.start() # 开启线程t2 t1.join() # 等待t1线程结束 t2.join() # 等待t2线程结束 print("--------主线程结束-------------")
上述代码中,定义一个全局变量g_num,赋值为100,然后创建2个线程。一个线程将g_num增加50,一个线程将g_num减少50。如果g_num的最终结果为100,则说明线程之间可以共享数据,运行结果如下图所示:
祝学习愉快~
Python全能工程师
- 参与学习 人
- 提交作业 16233 份
- 解答问题 4470 个
全新版本覆盖5大热门就业方向:Web全栈、爬虫、数据分析、软件测试、人工智能,零基础进击Python全能型工程师,从大厂挑人到我挑大厂,诱人薪资在前方!
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星