当前位置: 首页 > news >正文

自己创建网站/网络服务器的功能

自己创建网站,网络服务器的功能,如何通过网站做网上报名系统,兰州市做网站的企业有哪些python 的 python获取多线程及子线程的返回值 最近有个需求,用多线程比较合适,但是我需要每个线程的返回值,这就需要我在threading.Thread的基础上进行封装 import threading class MyThread(threading.Thread): def __init__(self,func,args…

python 的 python获取多线程及子线程的返回值

最近有个需求,用多线程比较合适,但是我需要每个线程的返回值,这就需要我在threading.Thread的基础上进行封装

import threading

class MyThread(threading.Thread):

def __init__(self,func,args=()):

super(MyThread,self).__init__()

self.func = func

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

def foo(a,b,c):

time.sleep(1)

print a*2,b*2,c*2,

return a*2,b*2,c*2

st = time.time()

li = []

for i in xrange(4):

t = MyThread(foo,args=(i,i+1,i+2))

li.append(t)

t.start()

for t in li:

t.join() # 一定要join,不然主线程比子线程跑的快,会拿不到结果

print t.get_result()

et = time.time()

print et - st

执行结果

0 2 4 (0, 2, 4)

4 6 8 2 4 6 (2, 4, 6)

(4, 6, 8)

6 8 10 (6, 8, 10)

1.00200009346

元组中的结果是函数foo的返回值,至于结果为什么这么乱,我猜,是因为各子线程foo的print和主线程print get_result()一起抢占系统资源造成。

下面介绍下python获得子线程的返回值,具体代码如下所示:

import sys

import threading

import Queue

q = Queue.Queue()

def worker1(x, y):

func_name = sys._getframe().f_code.co_name

print "%s run ..." % func_name

q.put((x + y, func_name))

def worker2(x, y):

func_name = sys._getframe().f_code.co_name

print "%s run ...." % func_name

q.put((x - y, func_name))

if __name__ == '__main__':

result = list()

t1 = threading.Thread(target=worker1, name='thread1', args=(10, 5, ))

t2 = threading.Thread(target=worker2, name='thread2', args=(20, 1, ))

print '-' * 50

t1.start()

t2.start()

t1.join()

t2.join()

while not q.empty():

result.append(q.get())

for item in result:

if item[1] == worker1.__name__:

print "%s 's return value is : %s" % (item[1], item[0])

elif item[1] == worker2.__name__:

print "%s 's return value is : %s" % (item[1], item[0])

这是目前最主流的获取线程数据的方法。使用 Queue 库创建队列实例,用来储存和传递线程间的数据。Python 的队列是线程安全的,也就是说多个线程同时访问一个队列也不会有冲突。Python 队列有三种 FIFO 先进先出,FILO 先进后出(类似栈),优先级队列(由单独的优先级参数决定顺序)。使用队列可以实现简单 生产者 – 消费者 模型

总结

以上所述是小编给大家介绍的python获取多线程及子线程的返回值,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

http://www.jmfq.cn/news/4823407.html

相关文章:

  • 网站排名怎么做/seo程序
  • 网站维护服务公司/网站收录工具
  • 中华人民住房和城乡建设厅网站/社群营销怎么做
  • 17网站一起做网店官网/电子商务网络营销
  • 西安天气最新公布/seo编辑招聘
  • 兰州百度推广的公司/东莞做网站优化
  • 做愛表情网站/域名ip查询查网址
  • 做定制网站多少钱/seo投放是什么意思
  • 安全的政府网站建设/电脑培训班有哪些科目
  • 新闻网站建设的原因/google adwords关键词工具
  • 仿糗事百科网站源码dede二次开发分享+评论+互动/今日热搜榜排名最新
  • 网站控制/推广怎么做
  • 武汉做网站的公司哪家好/seo运营经理
  • 供应链平台/汕头搜索引擎优化服务
  • 做网站的感想/百度一下知道官网
  • 网站栏目英文/网站seo视频
  • 网站建设风险的特征/满十八岁可以申请abc认证吗
  • 武汉网站建设的公司哪家好/成都高端企业网站建设
  • 网站开发还是做数据库开发/陕西网站建设网络公司
  • 上海网站开发公司排名/seo是指搜索引擎优化
  • 做网站优化给业务员提成/好的竞价推广托管
  • 浦城 做网站/网络营销的未来发展趋势
  • 如何在建设银行网站申购纪念币/链接怎么做
  • 做专业课视频课的网站/贵阳网络推广排名
  • .net 网站开发教程/seo优化网站排名
  • 网站开发工作总结论文/如何做营销
  • 企业网站seo手机/百度快照的作用是什么
  • 开网站建设公司心得/网站google搜索优化
  • 怎么删除wordpress主题/关键词优化排名第一
  • 网站建设yingkagou/免费seo推广软件