Python实战之多线程编程thread模块
来源:互联网 发布:app软件大全 编辑:程序博客网 时间:2024/04/30 11:11
Python实战之多线程编程thread模块
在Python中除了可以通过继承threading.Thread类来实现多线程外,也可以调用thread模块中的start_new_thread()函数来产生新的线程,如下
- import time, thread
- def timer():
- print('hello')
- def test():
- for i in range(0, 10):
- thread.start_new_thread(timer, ())
- if __name__=='__main__':
- test()
- time.sleep(10)
或者
- import time, thread
- def timer(name=None, group=None):
- print('name: ' + name + ', group: ' + group)
- def test():
- for i in range(0, 10):
- thread.start_new_thread(timer, ('thread' + str(i), 'group' + str(i)))
- if __name__=='__main__':
- test()
- time.sleep(10)
这个是thread.start_new_thread(function,args[,kwargs])函数原型,其中function参数是你将要调用的线程函数;args是讲传递给你的线程函数的参数,他必须是个tuple类型;而kwargs是可选的参数。线程的结束一般依靠线程函数的自然结束;也可以在线程函数中调用thread.exit(),他抛出SystemExit exception,达到退出线程的目的。
下面来看一下thread中的锁机制,如下两段代码:
代码一
- import time, thread
- count = 0
- def test():
- global count
- for i in range(0, 10000):
- count += 1
- for i in range(0, 10):
- thread.start_new_thread(test, ())
- time.sleep(5)
- print count
代码二
- import time, thread
- count = 0
- lock = thread.allocate_lock()
- def test():
- global count, lock
- lock.acquire()
- for i in range(0, 10000):
- count += 1
- lock.release()
- for i in range(0, 10):
- thread.start_new_thread(test, ())
- time.sleep(5)
- print count
代码一中的值由于没有使用lock机制,所以是多线程同时访问全局的count变量,导致最终的count结果不是10000*10,而代码二中由于是使用了锁,从而保证了同一个时间只能有一个线程修改count的值,所以最终结果是10000*10.
0 0
- Python实战之多线程编程thread模块
- Python实战之多线程编程thread模块
- Python实战之多线程编程thread模块
- Python实战之多线程编程threading.Thread
- Python实战之多线程编程threading.Thread
- python 之多线程编程
- Python学习之多线程编程
- [Python]核心编程之多线程编程
- Android开发之多线程编程Thread和Runnable使用
- java编程之多线程 入门级,继承Thread类
- Android开发之多线程编程Thread和Runnable使用
- Android开发之多线程编程Thread和Runnable使用
- Android开发之多线程编程Thread和Runnable使用
- Android开发之多线程编程Thread和Runnable使用
- Android开发之多线程编程Thread和Runnable使用
- Android开发之多线程编程Thread和Runnable使用
- Python: Socket编程之多线程聊天室
- python多线程编程(一)--thread模块
- 多线程编程(3): 使用互斥锁同步线程
- 【iOS初学笔记】TextField设置内填充(padding or inset)
- Python实战之多线程编程threading.Thread
- codeforces 283C Coin Troubles (神级思维+判环+背包)
- HDU 3665 Seaside (Floyd 最短路)
- Python实战之多线程编程thread模块
- Python实战之子进程
- MySQL应用
- C++之面向程序设计浅析
- 我不是会学会玩
- HDU356 Eight II(康拓展开+预处理)
- PowerShell常用的轉義符、比較符、邏輯操作符
- Python多线程编程
- C++之多态