Python 实现多线程的几种方式
threading.Thread 模块
继承实现:
import threading
import time class TestThread(threading.Thread):
def __init__(self, name):
super(TestThread, self).__init__()
self.name = name def run(self):
print('线程%s 开始' % self.name)
time.sleep(5)
print('线程%s 结束' % self.name) def main():
threads = []
thread_name = ['1', '2', '3']
for name in thread_name:
t = TestThread(name)
threads.append(t)
for thread in threads:
thread.start() # 启动线程
for thread in threads:
thread.join() # 阻塞主线程 if __name__ == '__main__':
main()
函数实现:
import threading
import time def main(name):
print('线程%s 开始' % name)
time.sleep(5)
print('线程%s 结束' % name) if __name__ == '__main__':
threads = []
thread_name = ['1', '2', '3']
for name in thread_name:
t = threading.Thread(target=main, args=(name,))
t.start()
threads.append(t)
for thread in threads:
thread.join()
concurrent.futures 模块
线程池:
import time
from concurrent.futures import ThreadPoolExecutor def main(name):
print('线程%s 开始' % name)
time.sleep(5)
print('线程%s 结束' % name) if __name__ == '__main__':
thread_name = ['1', '2', '3']
with ThreadPoolExecutor(4) as executor:
executor.map(main, thread_name)
Python 实现多线程的几种方式的更多相关文章
- c#使用多线程的几种方式示例详解
本文转载自:http://www.jb51.net/article/46234.htm 本文章主要介绍了c#使用多线程的几种方式,通过示例学习c#的多线程使用方式,大家参考使用吧 (1)不需要传递参数 ...
- Java多线程系列--“基础篇”02之 常用的实现多线程的两种方式
概要 本章,我们学习“常用的实现多线程的2种方式”:Thread 和 Runnable.之所以说是常用的,是因为通过还可以通过java.util.concurrent包中的线程池来实现多线程.关于线程 ...
- java多线程系类:基础篇:02常用的实现多线程的两种方式
本章,我们学习"常用的实现多线程的2种方式":Thread 和 Runnable.之所以说是常用的,是因为通过还可以通过java.util.concurrent包中的线程池来实现多 ...
- Java实现多线程的两种方式
实现多线程的两种方式: 方式1: 继承Thread类 A: 自定义MyThread类继承Thread类 B: 在MyThread类中重写run() C: 创建MyThread类的对象 D: 启动线程对 ...
- python实现单例模式的三种方式及相关知识解释
python实现单例模式的三种方式及相关知识解释 模块模式 装饰器模式 父类重写new继承 单例模式作为最常用的设计模式,在面试中很可能遇到要求手写.从最近的学习python的经验而言,singlet ...
- c# 多线程的几种方式
1.什么是线程? 进程作为操作系统执行程序的基本单位,拥有应用程序的资源,进程包含线程,进程的资源被线程共享,线程不拥有资源. 2.前台线程和后台线程的区别? 程序关闭时,后台线程直接关闭,但前台线程 ...
- day2 编程语言介绍、Python运行程序的两种方式、变量
一 编程语言介绍 1. 机器语言 用计算机能理解的二进制指令直接编写程序,直接控制硬件 2. 汇编语言 用英文标签取代二进制指令编写程序,本质也是直接控制硬件 3. 高级语言 用人能理解的表达方式去编 ...
- Python 操作 MySQL 的5种方式(转)
Python 操作 MySQL 的5种方式 不管你是做数据分析,还是网络爬虫,Web 开发.亦或是机器学习,你都离不开要和数据库打交道,而 MySQL 又是最流行的一种数据库,这篇文章介绍 Pytho ...
- 创建多线程的第一种方式——创建Thread子类和重写run方法
创建多线程的第一种方式——创建Thread子类和重写run方法: 第二种方式——实现Runnable接口,实现类传参给父类Thread类构造方法创建线程: 第一种方式创建Thread子类和重写run方 ...
随机推荐
- Neo4j 图数据库查询
Cypher 介绍 Cypher 介绍:作为Neo4j的查询语言,"Cypher"是一个描述性的图形查询语言,允许不必编写图形结构的遍历代码对图形存储有表现力和效率的查询.Cyph ...
- 【Linux】vim小技巧,如何批量添加或者删除注释
环境:centos vim或者vi都可以 例如文件如下: aaa bbb ccc ddd 有四行文件,想将前三行都添加注释 先查看行数: :set nu 可以这样做: :1,3s%^%#% 即可,如 ...
- Python Debug工具
最近在github上冒出了一个python的debug神器PySnooper,号称在debug时可以消灭print.那么该工具有哪些优点呢,如何使用该工具呢.本文就介绍该工具的优缺点和使用方式. 前言 ...
- 使用pushplus+python实现亚马逊到货消息推送微信
xbox series和ps5发售以来,国内黄牛价格一直居高不下.虽然海外amazon上ps5补货很少而且基本撑不过一分钟,但是xbox series系列明显要好抢很多. 日亚.德亚的xbox ser ...
- JavaScript中创建数组的方式!
JavaScript中创建数组的方式! 利用数组字面量 // 1 直接量 console.log(Array.prototype); var arr = [1, 2, 4, 87432]; // 注意 ...
- 关于Java客户端连接虚拟机中的Kafka时,无法发送、接收消息的问题
kafka通过控制台模拟消息发送和消息接收正常,但是通过javaAPI操作生产者发送消息不成功 消费者接收不到数据解决方案? 1.问题排查 (1)首先通过在服务器上使用命令行来模拟生产.消费数据,发现 ...
- C# 防止程序多开(重复开启)
Mutex(mutual exclusion,互斥)是 .Net Framework 中提供跨多个线程同步访问的一个类.它非常类似了 Monitor 类,因为他们都只有一个线程能拥有锁定.而操作系统能 ...
- 你真的知道为什么要使用void(0)代替undefined吗?
我们平时用到的\(\color{#FF3030}{undefined}\)只是\(\color{#FF3030}{window}\)对象下的一个属性. Object.getOwnPropertyDes ...
- linux shell 判断空字符串的几种方法!
在书写linux shell 脚本我们经常会遇到,对一个字符串是否为空进行判断,下面我对几种常用的方法进行了一个总结: 1.-z判断 -z string True if the length of s ...
- cocos2d-x 调试问题
1.昨天一个新功能,在xcode模拟器上测试没问题.后来打包安卓后,一直有问题 就又添加日志功能 # define CCLOGFUNC(s) ...