python如何开启多线程_Python如何创建多线程

Python提供了_thread和threading两个模块来支持多线程,但_thread提供低级别的、原始的县城支持,以及一个简单的锁,通常情况下我们使用后者,来进行多线程编程

创建多线程

使用threading模块创建线程有两种方式,一种是调用Thread类的构造器来创建,另一种是继承Thread类创建线程类

使用Thread类的构造器创建线程

Thread类有如下构造器,直接调用它即可创建线程

__init__(self, group=None, target=None, name=None, args=(), kwargs=None, *, daemon=None)

group:指定该线程所属的线程组

target:指定该线程要调度的目标方法

args:指定一个元组,以位置参数的形式为target指定的函数传入参数

kwargs:指定一个字典,以关键字参数的形式为target指定的函数传入参数

daemon:指定所构建的线程是否是后台线程

使用构造器创建线程步骤

调用Thread类的构造器创建线程对象,其中target参数指定的函数作为线程执行体

调用线程对象的start()方法启动该线程

import threading

# 定义一个普通的action函数,该函数准备作为线程执行体

def action(max):for i inrange(max):

# 调用threading模块current_thread()函数获取当前线程

# 线程对象的getName()方法获取当前线程的名字

print(threading.current_thread().getName()+ " " +str(i))

# 下面是主程序(也就是主线程的执行体)for i in range(100):

# 调用threading模块current_thread()函数获取当前线程

print(threading.current_thread().getName()+ " " +str(i))if i == 20:

# 创建并启动第一个线程

t1=threading.Thread(target=action,args=(100,))

t1.start()

# 创建并启动第二个线程

t2=threading.Thread(target=action,args=(100,))

t2.start()

print('主线程执行完成!')

args=(100,)可以看到这个参数,他是个元组形式的参数,按位置逐一传给函数执行体,在这个例子中就是action(MAX)函数

继承Thread类创建线程类

通过继承Thread类来创建线程步骤

定义Thread类的子类,并重写该类的run()函数,run()函数是线程执行体

创建Thread子类的实例,也就是创建线程对象

调用线程对象的start()方法来启动线程

————————————————

import threading

# 通过继承threading.Thread类来创建线程类classFkThread(threading.Thread):

def __init__(self):

threading.Thread.__init__(self)

self.i= 0# 重写run()方法作为线程执行体

def run(self):while self.i < 100:

# 调用threading模块current_thread()函数获取当前线程

# 线程对象的getName()方法获取当前线程的名字

print(threading.current_thread().getName()+ " " +str(self.i))

self.i+= 1# 下面是主程序(也就是主线程的执行体)for i in range(100):

# 调用threading模块current_thread()函数获取当前线程

print(threading.current_thread().getName()+ " " +str(i))if i == 20:

# 创建并启动第一个线程

ft1=FkThread()

ft1.start()

# 创建并启动第二个线程

ft2=FkThread()

ft2.start()

print('主线程执行完成!')

多线程调用接口

# -*- coding: utf-8 -*-import threading

import requestsfromtime import ctime

import json

def syc_owen():"""syc_owen"""print("Start synchronizing %s %s" % ("owen", ctime()))

parameter= {"userId":"1263","userName":"13810078954","enterpriseId":"10330","flag":"sended"}

request_own= requests.put("https://xxxxxx.leadscloud.com/mail/receiveSendedAndRubbishMail", data=parameter)

data=request_own.json()

print(json.dumps(data, indent=4, sort_keys=True, ensure_ascii=False) )

print("接口调用已经返回结果,本次同步结束")

def syc_grace():"""syc_grace"""print("Start synchronizing %s %s" % ("grace", ctime()))

parameter= {"userId":"1294","userName":"13810327625","enterpriseId":"10330","flag":"sended"}

request_own= requests.put("https://xxxxxx.leadscloud.com/mail/receiveSendedAndRubbishMail", data=parameter)

data=request_own.json()

print(json.dumps(data, indent=4, sort_keys=True, ensure_ascii=False) )

print("接口调用已经返回结果,本次同步结束")

syc_email_threads=[] # 定义线程列表,然后逐一将线程放进列表最后加载线程列表执行

owen_thread= threading.Thread(target=syc_owen)

syc_email_threads.append(owen_thread)

grace_thread= threading.Thread(target=syc_grace)

syc_email_threads.append(grace_thread)if __name__ == '__main__':for threademail insyc_email_threads:

threademail.start() # 启动线程活动for threademail insyc_email_threads:

threademail.join() # 等待线程终止

多线程启动浏览器实例

单线程代码

# -*- coding: utf-8 -*-

"""Created on Wed Apr 24 11:45:55 2019@author: davieyang"""fromselenium import webdriver # 引入webdriverfromtime import sleep # 从time模块引入sleepfromtime import ctime # 从time模块引入ctime

def start_chrome(): # 定义启动谷歌浏览器的方法

print("starting chrome browser now! %s" %ctime()) # 控制台打印当前时间

chrome_driver=webdriver.Chrome()

chrome_driver.get("http://www.baidu.com") #打开百度主页

sleep(2)

chrome_driver.quit()

def start_firefox(): # 定义启动火狐浏览器的方法

print("starting firefox browser now! %s" %ctime()) # 控制台打印当前时间

fire_driver=webdriver.Firefox()

fire_driver.get("http://www.baidu.com") #打开百度主页

sleep(3)

fire_driver.quit()

def start_ie(): # 定义启动IE浏览器的方法

print("starting ie browser now! %s" %ctime()) # 控制台打印当前时间

ie_driver=webdriver.Ie()

ie_driver.get("http://www.baidu.com") #打开百度主页

sleep(5)

ie_driver.quit()if __name__ == '__main__':

start_chrome()

start_firefox()

start_ie()

print(u"全部结束 %s" %ctime())

多线程代码

# -*- coding: utf-8 -*-

"""Created on Wed Apr 24 19:23:25 2019@author: davieyang"""

fromselenium import webdriverfromtime import sleepfromtime import ctime

import threading

def start_chrome(): # 定义启动谷歌浏览器的方法

print("starting chrome browser now! %s" %ctime())

chrome_driver=webdriver.Chrome()

chrome_driver.get("http://www.baidu.com")

sleep(2)

chrome_driver.quit()

def start_firefox(): # 定义启动火狐浏览器的方法

print("starting firefox browser now! %s" %ctime())

fire_driver=webdriver.Firefox()

fire_driver.get("http://www.baidu.com")

sleep(3)

fire_driver.quit()

def start_ie(): # 定义启动IE浏览器的方法

print("starting ie browser now! %s" %ctime())

ie_driver=webdriver.Ie()

ie_driver.get("http://www.baidu.com")

sleep(5)

ie_driver.quit()

threading_list=[] #创建一个空列表用于存储线程

# 定义一个执行start_chrome()方法的线程

chrome_thread= threading.Thread(target=start_chrome)

threading_list.append(chrome_thread) # 将线程放到列表中

# 定义一个执行start_firefox()方法的线程

firefox_thread= threading.Thread(target=start_firefox)

threading_list.append(firefox_thread) # 将线程放到列表中'''# 定义一个执行start_chrome()方法的线程

ie_thread= threading.Thread(target=start_ie)

threading_list.append(ie_thread) # 将线程放到列表中'''

if __name__ == '__main__':for start_thread inthreading_list:

start_thread.start()for start_thread inthreading_list:

start_thread.join()

print(u"全部结束 %s" % ctime())

————————————————

版权声明:本文为CSDN博主「Davieyang.D.Y」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/dawei_yang000000/article/details/105609689

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/288748.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C#委托、事件学习之(二)——简单按钮委托事件

一、打开Form.cs文件,写入3个一般形式的EventArgs事件show1(),show2(),show3()。 using System; using System.Windows.Forms;namespace WindowsFormsApplication2 {public partial class Form1 : Form{public Form1(){InitializeComponent();}private void show1(object se…

php中的匿名函数简单使用

直接上代码了&#xff1a; <?php $test1 function($value) {echo $value; };$test1(HelloWorld); ?> 不懂你们有没有一种感觉&#xff0c;看见了js&#xff1f;近视的我&#xff0c;看到了function 就以为js… 好了&#xff0c;你看看最开始&#xff0c;是不是一个…

css3 设置背景图片大小(缩略图形式缩小)

废话当然不说了。直接上代码 <style>#mycon{background:url(Tpl/1.jpg);background-size:400px 400px;background-repeat:no-repeat;border-radius: 4px;border: 1px solid #ccc;width: 400px;height: 400px;}</style> <div id"mycon">原来背景图大…

C# WPF UI框架MahApps切换主题

概述本指南将向您介绍MahApps.Metro如何切换主题&#xff0c;所有的MahApps.Metro的主题都包含在单独的资源字典中。如何使用主题您可以在以下可用配色方案中进行选择&#xff1a;"Red", "Green", "Blue", "Purple", "Orange&quo…

剑指offer之打印链表的倒数第N个节点的值

1 问题 打印链表的倒数第N个节点的值&#xff0c;&#xff08;要求能只能便利链表一次&#xff09; 比如链表如下&#xff0c;打印倒数第三个值就是4 1-> 2-> 3-> 4-> 5-> 6 2 思路 既然只要只能遍历一次&#xff0c;我们可以这样思考&#xff0c;比如我们要…

网盘搜索插件php源码,百度云网盘搜索引擎 PHP版 v1.0

百度云网盘搜索引擎是一个以PHPMySQL进行开发的网盘搜索引擎源码。百度云网盘搜索引擎运行运行环境 开始之前你需要安装* PHP 5.3.7 * MySQL* Python 2.7 ~* [xunsearch](//xunsearch.com/) 搜索引擎项目的目录结构___大致是这样的--- indexer/ #索引--- spider/ #爬虫--- sql/…

C#委托、事件学习之(三)——热水器烧水案例

using System;namespace DelegateExample {public class Heater{private int temperature;public string type = "RealFire 001"; // 添加型号作为演示public string area = "China Xian"; // 添加产地作为演示//声明委托public delegate void BoiledEvent…

【hive】——metastore的三种模式

Hive中metastore&#xff08;元数据存储&#xff09;的三种方式&#xff1a; 内嵌Derby方式Local方式Remote方式[一]、内嵌Derby方式 这个是Hive默认的启动模式&#xff0c;一般用于单元测试&#xff0c;这种存储方式有一个缺点&#xff1a;在同一时间只能有一个进程连接使用数…

IDC:第一季度全球服务器市场收入下滑4.6% 市场为重大升级做准备

根据IDC全球服务器市场季度追踪报告&#xff0c;2017年第一季度全球服务器市场的厂商收入同比下滑4.6%。整个服务器市场的增长继续放缓&#xff0c;大多数超大规模服务提供商都在等待今年第二季度部署英特尔新的Skylake处理器。高端服务器销售继续拖累整体市场表现&#xff0c;…

DataGridView很详细的用法

DataGridiew用法总结一、DataGridView 取得或者修改当前单元格的内容&#xff1a; 当前单元格指的是 DataGridView 焦点所在的单元格&#xff0c;它可以通过 DataGridView 对象的 CurrentCell 属性取得。如果当前单元格不存在的时候&#xff0c;返回Nothing(C#是null) // 取得当…

python如何创建excel文件_Python xlrd/xlwt 创建excel文件及常用操作

一、创建excel代码备注&#xff1a;封装好了(可直接调用)"""-*- coding:utf-8 -*-Time :2020/8/20 21:02Author :JarvisFile :jar_excel_util.pyVersion&#xff1a;1.0"""from typing import Listimport xlwtclass JarExcelUtil:def __init__(s…

最通俗易懂的依赖注入之服务注册与注入

推荐关注「码侠江湖」加星标&#xff0c;时刻不忘江湖事这篇文章是 ASP.NET 6 依赖注入系列文章的第 4 篇&#xff0c;点击上方蓝字可以阅读整个系列。在上一篇文章中&#xff0c;我们讨论了依赖注入的服务容器与服务作用域。接下来&#xff0c;在这篇文章中&#xff0c;我们继…

linux之可视化查看磁盘大小并且删除大文件

1 问题 可视化查看磁盘大小并且删除大文件&#xff0c;之前我一直没有找到好的办法&#xff0c;原谅我的无知。 2 操作 我们直接搜索Disk Usage Analyzer 然后一个一个目的的点击查看&#xff0c;如下图 我们就可以清晰的看到文件占用大小&#xff0c;我们就可以很好的删除了…

php Heredoc应用说明

Heredoc部分实现界面与代码的准分离 我们如下的例子可以了解 Heredoc&#xff1a; <?php $name http://blog.csdn.net/a757291228; echo <<<HRERDOC <html> <head> <title>http://blog.csdn.net/a757291228</title> </head>…

C#委托、事件学习之(一)——委托事件描述

1、委托是一个类,定义了方法的类型,使得该方法可以作为其他方法的参数。避免了if...else的大量使用。 using System;namespace ConsoleApplication1 {public class GreetPeople{public delegate void GreetEventHander(object sender, GreetEventArgs e);public event Greet…

个人空间风格模版php,ThinkPHP 模板布局

模块继承 {extend name"" /}{block name""}{/block}基础模板 base.html子模板 块区在子模板中&#xff0c;可以对基础模板中的区块进行重载定义&#xff0c;如果没有重新定义的话&#xff0c;则表示沿用基础模板中的区块定义&#xff0c; 如果定义了一个空…

Win10用户远超4亿 Win10 RS2明年年初发布

10月26日晚22:00&#xff0c;微软Win10新品发布会在纽约芝士举行。发布会前&#xff0c;微软宣布目前最新的操作系统Windows 10已经迎来了4亿的用户&#xff0c;Windows 10的使用小时数&#xff0c;已经达到了2000亿&#xff0c;游戏时间也增长了500%。 同时微软还宣布&#xf…

bootstrap导航

HTML <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IE-edge"><!-- 开启IE8渲染模式 --><meta name"viewport" cont…

一个类可以实现多个接口吗_Java入门:基础知识(面向对象:接口)

接着上一篇的基础知识&#xff0c;今天俺们来学习一下&#xff1a;面向对象(万物皆对象)三大特征(封装、继承、多态)接口接口 概述&#xff1a;接口是一种引用数据类型&#xff0c;是方法的集合&#xff0c;接口的内部主要是定义方法&#xff0c;包含常量、抽象方法(JDK7及以…

剑指offer之判断链表是否包含环

1 问题 判断链表是否包含环 2 思路 2个指针&#xff0c;一个指针走一步&#xff0c;一个指针走2步&#xff0c;如果相遇则有&#xff0c;反之无。 3 代码实现 #include <stdio.h> #include <stdlib.h>#define true 1 #define false 0;typedef struct node {int …