python单线程与多线程执行对比、多线程的使用

  • 在python中,进程是一个执行中的程序,每个进程有自己的地址空间、内存、数据栈以及其他辅助数据;线程(有时候称为轻量级进程)与进程类似,但线程是在同一个进程下执行的,并且共享上下文。
    所以可以将线程视为在一个主进程(或主线程)中并行运行的一些‘迷你进程’。
    线程有一个指令指针,用于记录当前运行的上下文,当其他线程运行时,它可以被抢占也可以被临时挂起(这种做法称为让步yielding)
    一个进程中各个线程共享同一片数据空间,由此更易于信息共享和通信。(单核CPU中,由于无法实现真正的并发,所以线程实际规划为:每个线程运行一小会,让步给其他线程)
    可以将进程视为公路,线程即为路上的车道

    使用斐波那契、阶乘与累加函数执行比较单线程与多线程的运行结果:

import threading
from time import ctime, sleep


class MyThread(threading.Thread):
	def __init__(self, func, name='', *args):
		threading.Thread.__init__(self)
		self.name = name
		self.func = func
		self.args = args[0]
		self.result = self.func(self.args)

	def get_result(self):
		return self.result

	def run(self):
		print('starting', self.name,'at', ctime())
		self.result = self.func(self.args)# *self._args 表示接受元组类参数;
		print(self.name, 'finished at', ctime())

def fib(x):
	sleep(0.005)
	if x < 2:
		return 1
	return ( fib(x-2) + fib(x-1) )


def fac(x):
	sleep(0.3)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值