美文网首页
Python线程(一)

Python线程(一)

作者: 法号少林 | 来源:发表于2020-07-22 21:14 被阅读0次
优化之前的代码:
from multiprocessing.dummy import  Pool as ThreadPool
from datetime import datetime
import time


def geEntry(a,b):
    time.sleep(2)
    now = datetime.now() 
    print(now)
    return now

pool = ThreadPool(8)
now = datetime.now()                                          
a=list(range(10))
print(a)
# entries=pool.map(self.geEntry, plan_obj.entries)
entries=[]
b=1
c=2
for i in a:            
    result=pool.apply_async(geEntry, args=(b,c))    
    entries.append(result.get())                 
pool.close()
pool.join() 
Output:
0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
2020-07-12 20:12:51.402016
2020-07-12 20:12:53.403585
2020-07-12 20:12:55.404262
2020-07-12 20:12:57.405886
2020-07-12 20:12:59.406552
2020-07-12 20:13:01.407239
2020-07-12 20:13:03.407955
2020-07-12 20:13:05.409428
2020-07-12 20:13:07.410663
2020-07-12 20:13:09.412293

优化后的代码:

from multiprocessing.dummy import  Pool as ThreadPool
from datetime import datetime
import time


def geEntry(a,b):
    time.sleep(2)
    now = datetime.now() 
    print(now)
    return now

pool = ThreadPool(8)
now = datetime.now()                                          
a=list(range(10))
print(a)
# entries=pool.map(self.geEntry, plan_obj.entries)
entries=[]
b=1
c=2
for i in a:            
    result=pool.apply_async(geEntry, args=(b,c))    
    entries.append(result)   #需要把result先放到list里,如果直接用result.get()会变成同步按顺序调用,多线程同时指向失效              
pool.close()
pool.join() 

for result in entries:
    print("** %s" % result.get())
output:
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
2020-07-12 20:06:57.046435
2020-07-12 20:06:57.046496
2020-07-12 20:06:57.046496
2020-07-12 20:06:57.046496
2020-07-12 20:06:57.046496
2020-07-12 20:06:57.046496
2020-07-12 20:06:57.046496
2020-07-12 20:06:57.046496
2020-07-12 20:06:59.047407
2020-07-12 20:06:59.047407
** 2020-07-12 20:06:57.046496
** 2020-07-12 20:06:57.046496
** 2020-07-12 20:06:57.046496
** 2020-07-12 20:06:57.046496
** 2020-07-12 20:06:57.046496
** 2020-07-12 20:06:57.046435
** 2020-07-12 20:06:57.046496
** 2020-07-12 20:06:57.046496
** 2020-07-12 20:06:59.047407
** 2020-07-12 20:06:59.047407

相关文章

  • 11-9 多线程和多进程

    Python的GIL是针对进程还是线程?  是线程 Python多核cpu可以运行多线程吗? Python线程执行...

  • 5-线程(补充)

    Python多线程原理与实战 目的: (1)了解python线程执行原理 (2)掌握多线程编程与线程同步 (3)了...

  • 多线程

    Python多线程原理与实战 目的: (1)了解python线程执行原理 (2)掌握多线程编程与线程同步 (3)了...

  • Python多线程编程——创建线程的两个方法

    之前的一篇文章:Python多线程编程——多线程基础介绍,主要介绍了线程的基本知识,以及使用Python创建线程的...

  • Python 多线程 threading和multiproces

    Python 多线程 threading和multiprocessing模块 Python中常使用的线程模块 th...

  • Mr.Li--python-系统编程-线程

    线程 多线程--threading python的thread模块是比较底层的模块,python的threadin...

  • 线程、进程

    多线程 在介绍Python中的线程之前,先明确一个问题,Python中的多线程是假的多线程!为什么这么说,我们先明...

  • python爬虫--day05

    多线程 在介绍Python中的线程之前,先明确一个问题,Python中的多线程是假的多线程!为什么这么说,我们先明...

  • Python中的线程与进程

    进程会启动一个解释器进程,线程共享一个解释器进程 Python的线程开发 python的线程开发使用标准库thre...

  • python系统编程2

    线程 1.1.1 多线程——threading python的thread模块是比较底层的模块,python的th...

网友评论

      本文标题:Python线程(一)

      本文链接:https://www.haomeiwen.com/subject/vtbncktx.html