我们一直在说多线程可以同时进行程序的运转,那么今天我们再进一步思考,同时运行的线程会有多少个呢?可能有的小伙伴没往这个层面想过。那么我们可以把这个问题拆分成三个小部分:拆分的个数、拆分的线程是什么、在运行的线程是什么。明确了这个思路我们就可以进行今天内容的学习了。
线程的基本统计
import threading
def main(): print(threading.active_count()) # 统计现在有多少个激活的线程 print(threading.enumerate()) # 是哪几个激活的线程:名字 print(threading.current_thread()) # 现在正在运行的线程
if __name__ == ‘__main__’: main()
输出结果为
5 [<_MainThread(MainThread, started 21440)>, <Thread(Thread-4, started daemon 15276)>, <Heartbeat(Thread-5, started daemon 17844)>, <HistorySavingThread(IPythonHistorySavingThread, started 13528)>, <ParentPollerWindows(Thread-3, started daemon 21116)>] <_MainThread(MainThread, started 21440)>
表示有5个已经active的threading,一个是mainthread,另外是thread-4、thread-5、thead-3、savingThread;正在运行的是主线程。
拓展:增加target和传参args
def thread_job(): print("This is an added thread, numbet is %s."%threading.current_thread()) def main1(): # added_thread = threading.Thread() # 添加的线程,尚未给它工作 added_thread = threading.Thread(target=thread_job) # 添加的线程,同时给它定义一个工作,通过target传进去工作内容, # 同时加上执行的语句 .start() 运行 added_thread.start() if __name__ == '__main__': main1()
运行结果
This is an added thread, numbet is <Thread(Thread-9, started 13780)>.
本篇统计运行中多线程的个数不是很难,小伙伴们可以手动输入代码试试,再跟小编的代码进行对比,另外可以了解一下target和args的额外用法。
神龙|纯净稳定代理IP免费测试>>>>>>>>天启|企业级代理IP免费测试>>>>>>>>IPIPGO|全球住宅代理IP免费测试