Python多线程获取返回值代码实例
这篇文章主要介绍了Python多线程获取返回值代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
在使用多线程的时候难免想要获取其操作完的返回值进行其他操作,下面的方法以作参考:
一,首先重写threading类,使其满足调用特定的方法获取其返回值
import threading class MyThread(threading.Thread): """重写多线程,使其能够返回值""" def __init__(self, target=None, args=()): super(MyThread, self).__init__() self.func = target self.args = args def run(self): self.result = self.func(*self.args) def get_result(self): try: return self.result # 如果子线程不使用join方法,此处可能会报没有self.result的错误 except Exception: return None
二,调用get_result()方法,最终列表retval就是多线程返回值的集合:
def parse_detail_page(self,items_list): retval, RetList, _Threads = [], [], [] for url in items_list: t = MyThread(target=self.threadItem, args=(url,)) t.start() _Threads.append(t) for t in _Threads: t.join() retval.append(t.get_result()) def threadItem(self,url): """多线程请求""" response = requests.get(url) return response.text
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。
相关推荐
-
python支持多线程的爬虫实例
python是支持多线程的, 主要是通过thread和threading这两个模块来实现的,本文主要给大家分享python实现多线程网页爬虫 一般来说,使用线程有两种模式, 一种是创建线程要执行的函数, 把这个函数传递进Thread对象里,让它来执行. 另一种是直接从Thread继承,创建一个新的class,把线程执行的代码放到这个新的class里. 实现多线程网页爬虫,采用了多线程和锁机制,实现了广度优先算法的网页爬虫. 先给大家简单介绍下我的实现思路: 对于一个网络爬虫,如果要按广度遍历的方
-
python 实现多线程下载m3u8格式视频并使用fmmpeg合并
电影之类的长视频好像都用m3u8格式了,这就导致了多线程下载视频的意义不是很大,都是短视频,线不线程就没什么意义了嘛. 我们知道,m3u8的链接会下载一个文档,相当长,半小时的视频,应该有接近千行ts链接. 这些ts链接下载成ts文件,就是碎片化的视频,加以合并,就成了需要的视频. 那,即便网速很快,下几千行视频,效率也就低了,更何况还要合并.我就琢磨了一下午,怎么样才能多线程下载m3u8格式的视频呢? 先上代码,再说重难点: import datetime import os import r
-
python实现自动化报表功能(Oracle/plsql/Excel/多线程)
日常会有很多固定报表需要手动更新,本文将利用python实现多线程运行oracle代码,并利用xlwings包和numpy包将结果写入到指定excel模版(不改变模版内容),并自动生成带日期命名的新excel.此外还添加了logging模块记录运行日志,以及利用try-except实现遇到错误自动重新运行.下面将介绍整个自动化的实现过程. # -*- coding: utf-8 -*- # Create time: 2019-10-16 # Update time: 2019-11-28 # V
-
linux 下python多线程递归复制文件夹及文件夹中的文件
本文是利用python 复制文件夹 刚开始写了一个普通的递归复制文件夹 然后想了想 觉得对io频繁的程序 threading 线程还比较友好 就写了个多线程版本的 最恶心人的地方就是路径 其他都还好吧 import os import threading import multiprocessing length_of_folder = 0 def copyfile(Path): if os.path.isdir(Path): print("-----------%s" %
-
python kafka 多线程消费者&手动提交实例
官方文档:https://kafka-python.readthedocs.io/en/master/apidoc/KafkaConsumer.html import threading import os import sys from kafka import KafkaConsumer, TopicPartition, OffsetAndMetadata from consumers.db_util import * from consumers.json_dispose import *
-
python多线程使用方法实例详解
本文实例讲述了python多线程使用方法.分享给大家供大家参考,具体如下: threading 模块支持守护线程, 其工作方式是:守护线程一般是一个等待客户端请求服务的服务器. 如果把一个线程设置为守护线程,进程退出时不需要等待这个线程执行完成. 如果主线程准备退出时,不需要等待某些子线程完成,就可以为这些子线程设置守护线程标记. 需要在启动线程之前执行如下赋值语句: thread.daemon = True,检查线程的守护状态也只需要检查这个值即可. 整个 Python 程序将在所有非守护线程
-
python多线程实现代码(模拟银行服务操作流程)
1.模拟银行服务完成程序代码 目前,在以银行营业大厅为代表的窗口行业中大量使用排队(叫号)系统,该系统完全模拟了人群排队全过程,通过取票进队.排队等待.叫号服务等功能,代替了人们站队的辛苦. 排队叫号软件的具体操作流程为: 顾客取服务序号 当顾客抵达服务大厅时,前往放置在入口处旁的取号机,并按一下其上的相应服务按钮,取号机会自动打印出一张服务单.单上显示服务号及该服务号前面正在等待服务的人数. 服务员工呼叫顾客 服务员工只需按一下其柜台上呼叫器的相应按钮,则顾客的服务号就会按顺序的显示在显示屏上
-
python利用JMeter测试Tornado的多线程
JMeter的简介 JMeter是Apache组织开发的基于Java的压力测试工具.用于对软件做压力测试,它最初被设计用于Web应用测试,但后来扩展到其他测试领域. 它可以用于测试静态和动态资源,例如静态文件.Java 小服务程序.CGI 脚本.Java 对象.数据库.FTP 服务器, 等等. JMeter的下载网址为:https://jmeter.apache.org/download_jmeter.cgi,下载前请先确定电脑中安装了Java,下载完毕后点击bin文件夹下的"meter
-
Python利用多线程同步锁实现多窗口订票系统(推荐)
利用Python实现多窗口订票系统,利用 threading.Lock() 避免出现一票多卖,无票也卖的情况,并规范化输出情况. 代码: import threading import time tickets, lock = 20, threading.Lock() class TicketWindows(threading.Thread): def __init__(self, window_name): threading.Thread.__init__(self) self.window
-
Python多线程获取返回值代码实例
这篇文章主要介绍了Python多线程获取返回值代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 在使用多线程的时候难免想要获取其操作完的返回值进行其他操作,下面的方法以作参考: 一,首先重写threading类,使其满足调用特定的方法获取其返回值 import threading class MyThread(threading.Thread): """重写多线程,使其能够返回值""" d
-
Python get获取页面cookie代码实例
在Python中通过GET来获取页面的COOKIE是非常简单的事情,下面的代码实例演示了如何利用Python 获取COOKIE内容 #! /usr/bin/env python #coding=utf-8 # -*-coding:utf-8 -*- #encoding=utf-8 import urllib import urllib2 import httplib cj='' header={'Host':'218.94.26.135', 'Accept-Language':'zh-CN',
-
C++多线程获取返回值方法详解
在许多时候,我们会有这样的需求--即我们想要得到线程返回的值.但是在C++11 多线程中我们注意到,std::thread对象会忽略顶层函数的返回值. 那问题来了,我们要怎么获得线程的返回值呢? 我们通过一个例子来说明如何实现这个需求.用多个线程计算(a+b)/ (x+y) 的值 有两种方法,分别是 1. 传统的方法:在线程间共享指针 #include<iostream> #include<thread> #include<mutex> #include<atom
-
python在回调函数中获取返回值的方法
python中有用到回调函数的时候,而回调函数又需要返回数值的时候,就需要先将所被传为回调函数的函数先赋值给一个变量,然后等回调结束之后,将这个变量取值回来就可以了. 如我用到到的调用xmlreader时,传入的一个函数需要取回返回值的代码: # 创建一个 XMLReader parser = xml.sax.make_parser() # turn off namepsaces parser.setFeature(xml.sax.handler.feature_namespaces, 0) #
-
Python函数的返回值、匿名函数lambda、filter函数、map函数、reduce函数用法实例分析
本文实例讲述了Python函数的返回值.匿名函数lambda.filter函数.map函数.reduce函数用法.分享给大家供大家参考,具体如下: 函数的返回值: 函数一旦执行到 return,函数就会结束,并会返回return 后面的值,如果不使用显式使用return返回,会默认返回None . return None可以简写为 return. def my_add(x,y): z=x+y return z print(my_add(1,2))##打印的是返回值 def my_add_
-
python执行系统命令后获取返回值的几种方式集合
第一种情况 os.system('ps aux') 执行系统命令,没有返回值 第二种情况 result = os.popen('ps aux') res = result.read() for line in res.splitlines(): print line 执行系统命令,可以获取执行系统命令的结果 p = subprocess.Popen('ps aux',shell=True,stdout=subprocess.PIPE) out,err = p.communicate() for
-
解决python 执行shell命令无法获取返回值的问题
问题背景:利用python获取服务器中supervisor状态信息时发现未能获取到返回值. python获取执行shell命令后返回值得几种方式: # 1.os模块 ret = os.popen("supervisorctl status") ret_data = ret.read() # 2.subprocess模块 ret = subprocess.Popen('supervisorctl status',shell=True,stdout=subprocess.PIPE) out
-
Python多线程threading和multiprocessing模块实例解析
本文研究的主要是Python多线程threading和multiprocessing模块的相关内容,具体介绍如下. 线程是一个进程的实体,是由表示程序运行状态的寄存器(如程序计数器.栈指针)以及堆栈组成,它是比进程更小的单位. 线程是程序中的一个执行流.一个执行流是由CPU运行程序代码并操作程序的数据所形成的.因此,线程被认为是以CPU为主体的行为. 线程不包含进程地址空间中的代码和数据,线程是计算过程在某一时刻的状态.所以,系统在产生一个线程或各个线程之间切换时,负担要比进程小得多. 线程是一
-
JS中实现函数return多个返回值的实例
近期开始着手web前端的工作,主要用到JS.html5+css.以及JS框架(jQuery.dojo等等),在学习和写代码的过程中有一些小经验跟大家一起交流与学习. 今天主要针对"JS实现函数return多个返回值"的方法. 1.函数的基本方法如下: functionA(fp1,fp2,fp3){ ....... return {a1:a,b1:b,c1:c}; //将得到的值a,b,c,封装在一个字段分别有a1,b1,c1的对象中 } 2.调用函数: 调用functionA(fp1,
-
python 图像处理画一个正弦函数代码实例
这篇文章主要介绍了python 图像处理画一个正弦函数代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 import numpy as np from PIL import Image import matplotlib.pyplot as plt import math size = 300 new_im = Image.new("RGBA",(size,size)) #创建一个空的图片 a_img = np.array(ne
随机推荐
- 浅谈Angular路由守卫
- phpmyadmin config.inc.php配置示例
- JAVA/JSP学习系列之八(改写MySQL翻页例子)
- javascript 类和命名空间的模拟代码
- Tomcat网站发布配置方案详细说明
- 详解 swift3.0 可选绑定共用同一块内存空间的实例
- java获取注册ip实例
- 一句话木马连接客户端
- 深入解析WordPress中加载模板的get_template_part函数
- Node.js中用D3.js的方法示例
- 关于Ruby on Rails路由配置的一些建议
- 很简单的Java断点续传实现原理
- jquery高级编程的最佳实践详解
- JavaScript基础知识之数据类型
- Easypanel免费的VPS主机面板 可跨平台Linux和Windows
- Android实现手势滑动和简单动画效果
- C#中静态的深入理解
- 新浪新闻小偷
- Android图片压缩的实例详解
- Android SDK中的Support兼容包详解