You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Threading实现股票模拟函数在后台持续运行?

解决股票模拟器后台持续运行+菜单交互的问题

我来帮你搞定这个问题!你之前用threading没成功,大概率是因为原来的函数只执行了一轮就结束了,而且没处理好后台线程和主菜单的协同逻辑。下面是调整后的完整实现,一步步给你说明:

第一步:导入必要模块

先确保把需要的模块都导入进来:

import threading
import random
import time

第二步:修改后台股票波动函数

把原来的函数改成无限循环持续运行的版本,直接修改传入的股票列表(因为列表是可变对象,线程内的修改会同步到主程序):

def stockPriceRandomiser(stockPrices):
    while True:  # 无限循环,持续模拟波动
        for i in range(len(stockPrices)):
            ran_num = random.randint(0, 1)
            if ran_num == 0:
                loss = random.randint(90, 99) / 100
                stockPrices[i] = round(stockPrices[i] * loss, 2)  # 保留两位小数更贴合真实股价
            else:
                profit = random.randint(101, 110) / 100
                stockPrices[i] = round(stockPrices[i] * profit, 2)
        time.sleep(20)  # 每20秒完成一轮股价波动

第三步:实现用户交互菜单

做一个简单的菜单,让用户可以随时查看当前股价、退出程序:

def show_menu(stockPrices):
    while True:
        print("\n===== 股票模拟器菜单 =====")
        print("1. 查看当前所有股票价格")
        print("2. 退出程序")
        choice = input("请输入你的选择(1/2):")
        
        if choice == "1":
            print("\n当前股票价格:")
            for idx, price in enumerate(stockPrices, 1):
                print(f"股票{idx}: ${price}")
        elif choice == "2":
            print("程序已退出!")
            break
        else:
            print("输入无效,请重新选择!")

第四步:启动后台线程+运行主菜单

在主程序里启动后台线程,设置为守护线程,然后运行菜单逻辑:

if __name__ == "__main__":
    stockPrices = [79, 45, 1233, 67, 54, 5000, 7000, 6974]
    
    # 创建后台线程,传入波动函数和股票列表参数
    stock_thread = threading.Thread(target=stockPriceRandomiser, args=(stockPrices,), daemon=True)
    stock_thread.start()  # 启动后台线程
    
    # 运行主菜单,这是主线程的核心任务
    show_menu(stockPrices)

关键细节说明

  • 守护线程:设置daemon=True后,当用户选择退出菜单时,后台线程会自动终止,不用手动处理线程停止的问题。
  • 列表的可变性:因为直接传入了stockPrices列表,线程内对它的修改会实时反映到主程序中,用户查看菜单时能看到最新的股价。
  • 无限循环:后台函数用while True实现持续运行,每20秒遍历所有股票调整价格,完全符合你模拟随机波动的需求。

你可以直接运行这段代码,后台会自动持续更新股价,同时你可以通过菜单随时查看最新价格,选择退出时程序会完全终止。

内容的提问来源于stack exchange,提问作者Oliver Frost

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 03:48:57