python线程的几种创建方式详解
作者:三国小梦 时间:2023-06-11 20:23:35
Python3 线程中常用的两个模块为:
_thread
threading(推荐使用)
使用Thread类创建
import threading
from time import sleep,ctime
def sing():
for i in range(3):
print("正在唱歌...%d"%i)
sleep(1)
def dance():
for i in range(3):
print("正在跳舞...%d"%i)
sleep(1)
if __name__ == '__main__':
print('---开始---:%s'%ctime())
t1 = threading.Thread(target=sing)
t2 = threading.Thread(target=dance)
t1.start()
t2.start()
#sleep(5) # 屏蔽此行代码,试试看,程序是否会立马结束?
print('---结束---:%s'%ctime())
"""
输出结果:
---开始---:Sat Aug 24 08:44:21 2019
正在唱歌...0
正在跳舞...0---结束---:Sat Aug 24 08:44:21 2019
正在唱歌...1
正在跳舞...1
正在唱歌...2
正在跳舞...2
"""
说明:主线程会等待所有的子线程结束后才结束
使用Thread子类创建
为了让每个线程的封装性更完美,所以使用threading模块时,往往会定义一个新的子类class,只要继承threading.Thread就可以了,然后重写run方法。
import threading
import time
class MyThread(threading.Thread):
def run(self):
for i in range(3):
time.sleep(1)
msg = "I'm "+self.name+' @ '+str(i) #name属性中保存的是当前线程的名字
print(msg)
if __name__ == '__main__':
t = MyThread()
t.start()
"""
输出结果:
I'm Thread-5 @ 0
I'm Thread-5 @ 1
I'm Thread-5 @ 2
"""
使用线程池ThreadPoolExecutor创建
from concurrent.futures import ThreadPoolExecutor
import time
import os
def sayhello(a):
for i in range(10):
time.sleep(1)
print("hello: " + a)
def main():
seed = ["a", "b", "c"]
# 最大线程数为3,使用with可以自动关闭线程池,简化操作
with ThreadPoolExecutor(3) as executor:
for each in seed:
# map可以保证输出的顺序, submit输出的顺序是乱的
executor.submit(sayhello, each)
print("主线程结束")
if __name__ == '__main__':
main()
来源:https://www.cnblogs.com/lxy0/p/11403555.html
标签:python,线程,创建,方式
0
投稿
猜你喜欢
python判断给定的字符串是否是有效日期的方法
2023-04-07 20:07:07
Linux下升级python和安装pip的详解
2022-08-23 06:27:15
python实现双链表
2022-06-20 01:47:48
使用python求解二次规划的问题
2022-05-15 21:40:59
asp如何制作一个倒计时的程序?
2010-06-29 21:25:00
Python实现简单猜拳游戏
2022-07-08 04:40:10
解决python nohup linux 后台运行输出的问题
2022-03-25 06:40:11
对TensorFlow的assign赋值用法详解
2023-03-18 22:52:56
VSCode远程SSH免密登录配置实现
2024-01-04 19:17:07
python一行代码合并了162个Word文件
2022-07-24 04:20:57
SQL Server视图管理中的四个限制条件
2009-03-06 14:24:00
mysql myisam优化设置
2010-03-13 16:59:00
JSP自定义标签Taglib实现过程重点总结
2024-03-15 23:49:46
Python xpath表达式如何实现数据处理
2021-09-02 22:07:15
Mysql树形递归查询的实现方法
2024-01-14 08:05:16
使用python爬取微博数据打造一颗“心”
2022-05-28 22:30:09
Python竟能画这么漂亮的花,帅呆了(代码分享)
2021-02-04 15:50:00
自动备份Oracle数据库
2024-01-16 01:16:55
Python如何使用OS模块调用cmd
2023-03-22 02:25:39
Python登录系统界面实现详解
2021-02-11 19:24:04