python3 多线程-线程异步

python3有threading和_thread两种线程写法,推荐使用threading。

开多线程就是为了使用多线程的异步能力来同时执行多个线程。

1. threading方法:

以下代码可以执行异步或者同步线程。

复制代码
 1 import threading
 2 import time
 3  
 4  
 5 class my_thread(threading.Thread):
 6     def __init__(self, th_id, th_name):
 7         threading.Thread.__init__(self)
 8         self.th_id = th_id
 9         self.th_name = th_name
10         pass
11  
12     def run(self):
13         print("开始线程:" + self.th_name)
14         run_func(self.th_name)
15         print("退出线程:" + self.th_name)
16  
17     pass
18  
19  
20 exitFlag = 0
21  
22  
23 def run_func(th_name):
24     if exitFlag:
25         th_name.exit()
26         pass
27     else:
28         # print('运行线程:' + th_name)
29         do(th_name)
30         pass
31     print('---%s---' % (time.ctime(time.time())))
32     # time.sleep(0.1)
33     pass
34  
35  
36 # 自定义,在此定义你要运行的参数
37 def do(th_name):
38     print('---执行自定义函数---')
39  
40     pass
41  
42  
43 def index(sync):
44     print('开始创建线程。。')
45     for create in range(0, 2000):
46         # 创建新线程
47         th = my_thread(create, "Thread-" + str(create))  # id, name
48         th.start()
49         if sync:  # 线程同步异步开关,True/False
50             th.join()  # 线程等待,执行完才能进入下一个线程
51             pass
52         else:  # 异步,推荐
53             pass
54         pass
55     print('\n所有线程创建完毕。。')
56     pass
57  
58  
59 index(False)  # 同步线程True,异步线程False(推荐)
复制代码

2. _thread方法(程序要求不高的话推荐这种老写法):

复制代码
 1 import _thread
 2  
 3  
 4 all_thread_num = 0
 5  
 6  
 7 def page_class(cla, that_num):
 8     print("已启动线程=" + str(that_num))
 9     global all_thread_num
10     all_thread_num += 1
11     print("线程总数=" + str(all_thread_num))
12     for page in range(1, 30):
13         print("内=" + str(page))
14         pass
15     pass
16  
17  
18 for cla in range(20190, 20291):  # 创建线程
19     try:
20         _thread.start_new_thread(page_class, (cla, (cla - 20000)))
21         pass
22     except:
23         print("无法启动线程")
24         pass
25     pass
26  
27 while 1:
28     pass
复制代码

 

posted @   Vincent-yuan  阅读(1856)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 25岁的心里话
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
历史上的今天:
2019-05-02 vmware下的linux没有网络问题解决思路
2019-05-02 asp.net core 系列之允许跨域访问2之测试跨域(Enable Cross-Origin Requests:CORS)
2019-05-02 asp.net core 系列之允许跨域访问-1(Enable Cross-Origin Requests:CORS)
点击右上角即可分享
微信分享提示