Python (十一)多线程
2023-12-19 02:02:52
程序员的公众号:源1024,获取更多资料,无加密无套路!
最近整理了一波电子书籍资料,包含《Effective Java中文版 第2版》《深入JAVA虚拟机》,《重构改善既有代码设计》,《MySQL高性能-第3版》,《Java并发编程实战》等等
获取方式: 关注公众号并回复 电子书 领取,更多内容持续奉上
Python3 线程中常用的两个模块为:
- _thread (低级模块)
- threading (高级模块,是对_thread的封装,推荐使用)
?threading
current_thread() | 当前 threading.Thread 对象 |
enumerate() | 所有存活的 threading.Thread 对象 |
active_count() | 存活的 threading.Thread 对象数量 |
get_ident() | 当前线程的线程标识符 |
main_thread() | 主线程对象 |
get_native_id() | 核分配给当前线程的原生集成线程ID |
TIMEOUT_MAX | 阻塞函数中timeout允许的最大值 |
?
from threading import Thread
def test_thread():
print(threading.current_thread())
print(threading.enumerate())
print(threading.active_count())
print(threading.get_ident())
print(threading.main_thread())
print(threading.get_native_id())
print(threading.TIMEOUT_MAX)
def main():
thread = Thread(target=test_thread,name='线程')
thread.start()
if __name__ == '__main__':
main()
输出
<Thread(线程, started 22108)>
[<_MainThread(MainThread, started 4064)>, <Thread(线程, started 22108)>]
2
22108
<_MainThread(MainThread, stopped 4064)>
22108
4294967.0
?线程使用
def test_thread(taskStart,taskEnd):
start = time.time()
print(threading.current_thread(),taskStart)
#模拟任务运行时间
time.sleep(random.randint(3, 9))
end = time.time()
print(threading.current_thread(),taskEnd,f'线程耗时: {end - start:.3f}秒.')
def main():
threads = [
Thread(target=test_thread, kwargs={'taskStart': '线程一开始执行。。。','taskEnd':'线程一执行完成!'}),
Thread(target=test_thread, kwargs={'taskStart': '线程二开始执行。。。','taskEnd':'线程一执行完成!'}),
Thread(target=test_thread, kwargs={'taskStart': '线程三开始执行。。。','taskEnd':'线程一执行完成!'})
]
start = time.time()
# 启动三个线程
for thread in threads:
thread.start()
print(thread.name)
# 等待线程结束
for thread in threads:
thread.join()
end = time.time()
print(f'总耗时: {end - start:.3f}秒.')
if __name__ == '__main__':
main()
输出
<Thread(线程一, started 17448)> 线程一开始执行。。。
线程一
<Thread(线程二, started 21624)> 线程二开始执行。。。
线程二
<Thread(线程三, started 21408)> 线程三开始执行。。。
线程三
<Thread(线程一, started 17448)> 线程一执行完成! 线程耗时: 3.003秒.
<Thread(线程三, started 21408)> 线程一执行完成! 线程耗时: 8.010秒.
<Thread(线程二, started 21624)> 线程一执行完成! 线程耗时: 9.012秒.
总耗时: 9.013秒.
系列文章索引
文章来源:https://blog.csdn.net/feikillyou/article/details/135065219
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!