python的多线程和java的多线程_三分钟带你掌握Python中的多进程和多线程

1. 多进程

本段代码教你使用多进程模块multiprocessing,定义了func(里面sleep两秒,比较耗时),你只需要修改功能函数即可用来做你的任务。对同一任务,用多进程和不用多进程进行了比较,应用速度会得到明显提升。

#coding:UTF-8

import multiprocessing

import time

from tqdm import tqdm

class MyMultiprocess(object):

def __init__(self, process_num):

self.pool = multiprocessing.Pool(processes=process_num)

def work(self, func, args):

result = []

for arg in args:

result.append(self.pool.apply_async(func, (arg,)))

self.pool.close()

self.pool.join()

finally_result = []

for res in result:

finally_result.append(res.get())

return finally_result

def func(num):

"""

功能函数

"""

for i in tqdm(range(10)):

time.sleep(2)

return num*num

if __name__ == "__main__":

start = time.time()

mymultiprocess = MyMultiprocess(5)

res = mymultiprocess.work(func, [1,2,3,4,5])

print(res)

end = time.time()

print("应用多进程耗时: %s" % (end-start))

start = time.time()

res = []

for i in range(1, 6):

j = func(i)

res.append(j)

print(res)

end = time.time()

print("不用多进程耗时: %s" % (end-start))

运行结果:

Caption

2. 多线程

本段代码教你使用多线程模threading,定义了func(里面sleep两秒,比较耗时),你只需要修改功能函数即可用来做你的任务。对同一任务,用多线程和不用多线程进行了比较,应用速度会得到明显提升。

import threading

import time

from tqdm import tqdm

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

except Exception:

return None

def func(num):

"""

功能函数

"""

for i in tqdm(range(10)):

time.sleep(2)

return num*num

if __name__ == "__main__":

start = time.time()

threads = []

results = []

for i in [1,2,3,4,5]:

t = MyThread(func, args=(i,))

threads.append(t)

t.start()

for t in threads:

t.join()

results.append(t.get_result())

print(results)

end = time.time()

print("应用多线程耗时: %s" % (end-start))

start = time.time()

results = []

for i in [1,2,3,4,5]:

result = func(i)

results.append(result)

print(results)

end = time.time()

print("不用多线程耗时: %s" % (end-start))

运行结果:

Caption

就是这么简单,放心使用吧!!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值