forwardhan20220215 2022-06-20 10:28
浏览 8
已结题

python中“调用栈”与“线程”的不同

** “调用栈”与“线程”之间的不同**

调用栈:
def a():
print('a() starts')
b()
d()
print('a() returns')

def b():
print('b() starts')
c()
print('b() returns')

def c():
print('c() starts')
print('c() returns')

def d():
print('d() starts')
print('d() returns')

a()
线程代码:
import threading
import time

def worker():
print(threading.current_thread().getName(), 'Starting')
time.sleep(0.2)
print(threading.current_thread().getName(), 'Exiting')

def my_service():
print(threading.current_thread().getName(), 'Starting')
time.sleep(0.3)
print(threading.current_thread().getName(), 'Exiting')

t = threading.Thread(name='my_service', target=my_service)
w = threading.Thread(name='worker', target=worker)
w2 = threading.Thread(target=worker) # use default name

w.start()
w2.start()
t.start()

线程运行结果:

worker Starting
Thread-1 Starting
my_service Starting
worker Exiting
Thread-1 Exiting
my_service Exiting

调用栈运行结果:
a() starts
b() starts
c() starts
c() returns
b() returns
d() starts
d() returns
a() returns

理解线程的并行过程以及各线程的运行时间,是学会利用线程的基础;调用栈的运行过程,是python中函数调用的基本运行方式,方便更容易理解局部与全局作用域。

  • 写回答

0条回答 默认 最新

    报告相同问题?

    问题事件

    • 系统已结题 6月28日
    • 创建了问题 6月20日

    悬赏问题

    • ¥20 WPF MVVM模式 handycontrol 框架, hc:SearchBar 控件 Text="{Binding NavMenusKeyWords}" 绑定取不到值
    • ¥15 需要手写数字信号处理Dsp三个简单题 不用太复杂
    • ¥15 数字信号处理考试111
    • ¥100 关于#audobe audition#的问题,如何解决?
    • ¥15 allegro17.2生成bom表是空白的
    • ¥15 请问一下怎么打通CAN通讯
    • ¥20 如何在 rocky9.4 部署 CDH6.3.2?
    • ¥35 navicat将excel中的数据导入mysql出错
    • ¥15 rt-thread线程切换的问题
    • ¥15 高通uboot 打印ubi init err 22