Python创建多线程的两种常用方法总结

要在 Python 中创建多线程,有两种常用的方法。

首先是使用函数。
你需要使用这个threading.Thread模块。
通常,流需要两个参数。
其中之一是线程函数的名称,即你想要在后台运行的函数。
注意后面没有括号。
另一个是需要以元组形式传递的流函数参数。
如果没有参数,则可以省略。

例如:
Python 导入时间 来自导入线程 Thread
def target(name="Python"): 对我来说在范围(2 )内: 打印(“你好”,名字) time.sleep(1 )
创建线程01 ,不指定参数 thread_01 = 主题(目标 = 目标) 开始主题01 thread_01 .start()
创建线程02 ,指定参数,注意逗号 thread_02 = 线程(目标=目标, args=("MING",)) 开始主题02 thread_02 .start()
结果将是:
嗨,Python 海明 嗨,Python 海铭
第二种方法是使用类。
比使用函数稍微复杂一些。
需要配置该类有两个要求:必须继承父类threading.Thread并重写run方法。
这种启动方法与线程函数类似。
你可以编写自己的业务逻辑,它将在start()之后调用。

例如:
Python 导入时间 来自导入线程 Thread
类 MyThread(Thread): def __init__(self, 类型=“Python”): 超级().__init__() self.type = type
def run(self): 对我来说在范围(2 )内: print("你好", self.type) time.sleep(1 )
如果 __name__ == '__main__': 创建流01 而不指定参数。
thread_01 = 我的线程() 创建流02 并指定参数。
thread_02 = MyThread("MIN") thread_01 .start() thread_02 .start()
结论还:
嗨,Python 海明 嗨,Python 海铭
除了创建线程之外,还需要学习线程对象的几个功能。

t.start():启动子线程。

t.join():阻塞子线程,等待其完成,然后继续执行。

t.is_alive()或t.isAlive():判断线程是否处于运行状态,如果运行则返回True,否则返回False。

t.daemon=True 或 t.daemon=False:指定主线程终止时线程是否终止。
默认值为 False。

t.name="My-Thread":设置线程名称。

仅此而已。
掌握这些方法就可以利用多线程来提高程序执行的效率。

python 多线程进度条如何并行

哎呀,关于设置这个并行进度条,我需要多说几句。
首先我们要明白,这个东西关键是要线程安全,不然数据就乱了,看起来也不好看。
看这个解决方案,使用了threading.Lock()。
这个东西就像一个交通警察,保证同一时间只有一个线程可以修改进度条数据。

然后每个进度条通过索引独立更新,相当于每个进度条都有自己的编号,独立工作,互不影响。
这种并行处理机制意味着每个工作线程负责更新特定的进度条,从而提高了效率。

至于显示提要,它独立运行并实时更新所有进度。
这保证了UI上的进度条实时更新并且看起来流畅。

这个级数计算很有趣。
它使用百分比增量,例如每次完成1 0%。
这样,无论任务大小如何,进度条更新都显得相当均匀。

输出格式已优化。
使用r在线刷新。
输出的格式为“Bar0:3 0%|Bar1 :5 0%”,看起来非常整洁。

实际应用场景,比如多文件下载模拟,非常实用。
不过需要注意的一点是,使用daemon=True可以保证程序能够正常终止,这在复杂场景下非常重要。
对于图形界面,建议使用 tqdm 库中的 tqdm.contrib.concurrent 模块,该模块非常实用。

该解决方案实现了真正的并行进度显示。
每个进度条都是独立更新的并且是线程安全的。
适用于需要同时监控多个任务进度的场景。
说实话,当时我不太明白其中的细节,但是后来看代码,发现还是蛮简单的。