龙空技术网

如何在python中使用多线程

自由坦荡的湖泊AI 100

前言:

当前咱们对“python多模块共享参数”都比较关怀,小伙伴们都需要了解一些“python多模块共享参数”的相关文章。那么小编也在网摘上收集了一些有关“python多模块共享参数””的相关内容,希望看官们能喜欢,同学们快快来了解一下吧!

多线程是一种并发执行技术,它允许 python 程序同时执行多个任务。简单来说,我们知道我们的计算机有多个内核,有些有四个(四核处理器),有些有八个内核(八核处理器)。我们开发和运行的程序在这些内核上运行,每个内核一次运行一个程序。现在,如果我们想在一个内核上运行多个程序,让其余内核空闲用于其他工作,我们可以使用线程的概念来做到这一点。

在多线程中,程序由多个线程组成,每个线程独立执行,但共享相同的资源,如内存空间。Python 的线程模块用于创建和管理线程。

但是,如何在python中使用多线程?以下代码单元对此进行了简化概述。

# import the threading moduleimport threadingimport time
# defining a function for the treaddef my_func(x):  # the logic or the body of the function  print('this is thread ', x)
# creating threadsthread01 = [threading.Thread(target=my_func, args = (i ,)) for i in [1,2,3,4]]#start threadfor t in thread01:  t.start()Output:this is thread this is thread  2 1this is thread  3this is thread  

上面的 python 线程示例是线程概念的简单使用,用于多次运行程序,每次都有不同的参数,并且还在单个内核中。

现在,还可以在许多其他任务中使用线程的概念,其中之一是将数据从 url 提取到不同的文本文件中。希望使用线程来做到这一点,这意味着将编写一段代码,该代码将从所有三个 url 中获取数据,并逐个导入三个不同的文本文件。

为此,首先需要 url。这里使用的是:

此外,由于需要从在线 url 获取数据,需要 python 库“urllib.request”来访问这些 url 并允许我们执行数据提取部分。

遵循以下步骤来执行此任务:

导入 urllib 并创建一个函数来获取数据。

import urllib.requestdef file_download(url , filename):    urllib.request.urlretrieve(url , filename)Output:4

2. 创建一个列表,列出需要从中获取数据的所有链接。

url_list = ['; ,             ';,             ';]
url_listOutput:['; , ';, ';]

3. 创建文本文件列表

data_file_list = ['data1.txt', 'data2.txt','data3.txt']

4. 使用函数、URL 列表和文本文件列表创建线程。

thread2 = [threading.Thread(target=file_download , args=(url_list[i],data_file_list[i])) for i in range(len(url_list))]

5. 运行线程您一次准备好了所有文件。

for t in thread2:    t.start()

所以在这里,已经成功地从三个 url 中获取数据,而无需编写三次代码。

线程的用例网页抓取:多线程可用于同时抓取多个网页,提高数据检索的速度(类似于我们之前在本文中所做的)文件下载:从互联网下载多个文件时,我们可以使用线程同时下载文件。视频处理:在视频处理应用程序中,不同的线程可以处理各种不同的处理任务,如帧提取、过滤和编码。

标签: #python多模块共享参数