-
在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)