Python中线程资源共享的问题
2017-11-02 21:11
309 查看
Python中线程全局变量是共享的,这一点与进程不同,在进程中所有进程之间的资源都是无关的,不共享的,所以在进程中使用进程之间的通信机制,比如queue。
Python线程中非全局变量是不共享的,两个线程即便是运行同一函数,但是在函数中的非全局变量是不相关的,
from threading import Thread
import threading, time
def test1():
g_num = 100
name = threading.current_thread().name
print('---线程的名字是%s' % name)
if name == 'Thread-1':
g_num += 1
print()
else:
time.sleep(2)
print('---线程的名字是%s--g_num=%d' % (name, g_num))
p1 = Thread(target=test1)
p1.start()
p2 = Thread(target=test1)
p2.start()上面这段代码的运行结果是:
---线程的名字是Thread-1
---线程的名字是Thread-1--g_num=101
---线程的名字是Thread-2
---线程的名字是Thread-2--g_num=100
可以很清楚的看到线程1和2虽然都运行了test1(),但是非全局变量的结果是互不干扰的。
Python线程中非全局变量是不共享的,两个线程即便是运行同一函数,但是在函数中的非全局变量是不相关的,
from threading import Thread
import threading, time
def test1():
g_num = 100
name = threading.current_thread().name
print('---线程的名字是%s' % name)
if name == 'Thread-1':
g_num += 1
print()
else:
time.sleep(2)
print('---线程的名字是%s--g_num=%d' % (name, g_num))
p1 = Thread(target=test1)
p1.start()
p2 = Thread(target=test1)
p2.start()上面这段代码的运行结果是:
---线程的名字是Thread-1
---线程的名字是Thread-1--g_num=101
---线程的名字是Thread-2
---线程的名字是Thread-2--g_num=100
可以很清楚的看到线程1和2虽然都运行了test1(),但是非全局变量的结果是互不干扰的。
相关文章推荐
- Java线程中的资源共享问题
- 如何解决java线程中的资源共享的问题
- [Python]多线程编程&线程间共享变量&消费者生产者问题的解决
- 探究Python多进程编程下线程之间变量的共享问题
- java笔记:熟练掌握线程技术---基础篇之解决资源共享的问题(中)--中篇
- python manager 实现线程资源共享
- java回忆录(3)—ThreadLocal解决线程资源共享问题
- 线程死锁 解决共享资源问题
- 探究Python多进程编程下线程之间变量的共享问题
- java笔记:熟练掌握线程技术---基础篇之解决资源共享的问题(中)--下篇
- 线程共享资源的问题
- java笔记:熟练掌握线程技术---基础篇之解决资源共享的问题(中)--前篇
- 线程之间共享数据(两个线程之间使用同一份数据),线程锁要统一,不统一的话会出现线程安全问题
- 解决”不允许一个用户使用一个以上用户名与一个服务器或共享资源的多重连接“问题
- 关于Python multiprocessing.Array创建的共享内存无法删除的问题
- JAVA 并发编程随笔【七】线程安全与共享资源
- JAVA 并发编程随笔【七】线程安全与共享资源
- 同一个进程的线程到底共享了哪些资源?
- APP 缓存数据线程安全问题,多个线程同时对同一资源进行读写问题
- 线程间资源共享(线程同步)