2行python代码打造多线程工具,这是史上最强的黑科技?

版权声明:禁止转载至其它平台,转载至博客需带上此文链接。 https://blog.csdn.net/qq_41841569/article/details/85029406

2行python代码打造多线程工具,这是史上最强的黑科技?

Python黑科技

两行代码实现多线程操作

学习Python中有不明白推荐加入交流群
                号:960410445
                群里有志同道合的小伙伴,互帮互助,
                群里有不错的视频学习教程和PDF!

什么是线程?

线程(thread)存在于进程(process)中,每个线程都是进程中的一个实例(instance)。换而言之,线程是每个程序执行的基本单位,是进程的一部分。

什么,进程是啥?进程就是程序的实例。比方说,在windows平台下,如果我们打开任务管理器,就会发现其第一个标签为Processes,然后底下就是各个程序的进程:

2行python代码打造多线程工具,这是史上最强的黑科技?

所以多线程可以干什么?

举个栗子。我们先用以下代码创建一个带有按钮的tk窗口:

2行python代码打造多线程工具,这是史上最强的黑科技?

2行python代码打造多线程工具,这是史上最强的黑科技?

假设我们想实现一个功能:在按下按钮时用记事本打开一个文本文件。

OK,很简单,在_click()里加行代码,大功告成:

2行python代码打造多线程工具,这是史上最强的黑科技?

现在按一下按钮:

2行python代码打造多线程工具,这是史上最强的黑科技?

很完美,好像没什么毛病。但是如果我们想再点那个按钮,甚至拖动窗口的时候,却发现整个窗口变成了未响应状态:

2行python代码打造多线程工具,这是史上最强的黑科技?

这是因为我们在程序中打开了另一个进程,而程序在等待我们关闭(使用完)这个进程。因此,当我们把记事本关掉之后,一切恢复正常。这个问题该怎么解决呢?

threading module

我们可以创建一个线程。当我们开启这个线程的时候让它去执行_click()这个命令,从而使其与我们tkinter的主程序互不影响。

在Python中想达到这个目的很简单。首先我们要import这个叫threading的module:

import threading

然后嘛,就跟所有面向对象的写法一样,我们可以实例化一个threading.Thread对象:

t= threading.Thread(...)

括号里应该填什么呢?我们需要告诉这个线程它要去做的事情。所以我们给它的target参数提供一个function object,也就是_click.

t= threading.Thread(target= _click)

第二步,也是最后一步: 开启这个线程。

t.start()

大功告成。现在我们按下按钮后,即使不关闭记事本也可以任意拖动原来的窗口了。

以下为完整代码:

2行python代码打造多线程工具,这是史上最强的黑科技?

结尾

关于thread的详细解释:https://en.wikipedia.org/wiki/Thread_(computing)
Python threading官方文档:
https://docs.python.org/3/library/threading.html

猜你喜欢

转载自blog.csdn.net/qq_41841569/article/details/85029406