金字塔决策交易系统

 找回密码
 

微信登录

微信扫一扫,快速登录

搜索
查看: 2046|回复: 8

帮我看看代码。我想实现定时循环5次退出

[复制链接]

3976

主题

4045

帖子

4070

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
发表于 2023-3-10 08:47 | 显示全部楼层 |阅读模式
请教:帮我看看代码。我想实现定时循环5次退出(其实我不想退出程序,只想退出循环。后面还想执行其它的内容。用计时器能实现吗?)
time.sleep(1)#暂停1秒,暂停耗单个CPU满核。有没其它办法

import time
i=0
def init(context):  
    # 设置计时器
    settimer(msg, 1000)
   
def msg(context):
    #a = time.asctime( time.localtime(time.time()) )
    #print(a)
    #输出现在时间
    print(i)
    i=i+1 #这里取消注释运行时无响应。
    #终止时会报错:<built-in function killtimer> returned a result with an error set
    print(i)
    if i>5:
        print('111')
        #exit(context)#我想实现,定时循环5次退出

def handle_bar(context):   
    pass

#退出程序后杀死计时器
def exit(context):
    killtimer(msg)
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

19

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
FireScript
发表于 2023-3-10 10:30 | 显示全部楼层
你这个定时循环 是指做一个五次的循环?
那不就是一个while循环么
    i = 0
    while i<5:
            #do something
            i = i+1
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

19

主题

70

帖子

70

积分

等级: 免费版

注册:
2023-1-30
曾用名:
发表于 2023-3-10 10:54 | 显示全部楼层
我想要达到的效果是:print(“111”)执行5次,每次间隔60秒。
或者说用你们的计时器功能:settimer(msg, 1000),如何做到msg运行五次后,跳出来。不再继续下去
回复

使用道具 举报

19

主题

70

帖子

70

积分

等级: 免费版

注册:
2023-1-30
曾用名:
发表于 2023-3-10 11:13 | 显示全部楼层
技术009 发表于 2023-3-10 10:30
你这个定时循环 是指做一个五次的循环?
那不就是一个while循环么
    i = 0

from PythonApi import *
import time

def init(context):  
    context.i = 0
    while context.i<5:
        settimer(msg, 1000)# 设置计时器

def msg(context):
    print("111")
    print(context.i)
    context.i=context.i+1
    print(context.i)

def handle_bar(context):   
    pass

def exit(context):#退出程序后杀死计时器
    killtimer(msg)

按你的格式写的,还是有问题,看看我哪里写错了
回复

使用道具 举报

19

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
FireScript
发表于 2023-3-10 12:47 | 显示全部楼层
就用一个普通变量控制就行了。
import time

def init(context):
    context.i=0
    settimer(msg, 6000)

   
def msg(context):
    if context.i<5:
        context.i+=1
        print('111')

def handle_bar(context):   
    pass

#退出程序后杀死计时器
def exit(context):
    killtimer(msg)


但是这个实质上计时器还在运行,只是不打印了。
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

19

主题

70

帖子

70

积分

等级: 免费版

注册:
2023-1-30
曾用名:
发表于 2023-3-10 13:03 | 显示全部楼层
技术009 发表于 2023-3-10 12:47
就用一个普通变量控制就行了。
import time

#我应该如何跳出msg,杀死计时器.继续执行B和C部分
from PythonApi import *
import time

def init(context):
        print("我在这里处理A部分")
       
    context.i=0#我在这里6秒执行一次,执行5次后开始执行B部分
    settimer(msg, 6000)#我在这里6秒执行一次,执行5次后开始执行B部分
   
    #我应该如何跳出msg,杀死计时器.继续执行B和C部分
   
    killtimer(msg)#我在这里杀死计时器,方便后面调用可以吗?
        print("我在这里处理B部分")
        print("我在这里处理C部分")

def msg(context):
    if context.i<5:
        context.i+=1
        print('111')

def handle_bar(context):   
    pass

#退出程序后杀死计时器
def exit(context):

补充内容 (2023-3-10 13:09):
因为你们的计时器写的比较好,等待时不会消耗CPU,所以我想用起来。辛苦您们了
回复

使用道具 举报

19

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
FireScript
发表于 2023-3-13 13:26 | 显示全部楼层
本帖最后由 技术009 于 2023-3-13 14:28 编辑

这种 计时器任务本身是异步的吧。 计时器进行的时候 你创建计时器的主程序地方 也是正常执行下去的呀。  你是想等计时器任务结束了 再执行BC?


金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

19

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
FireScript
发表于 2023-3-13 14:56 | 显示全部楼层
本帖最后由 技术009 于 2023-3-13 17:27 编辑

你这个只能把 BC 都放到一个只执行一次的任务里了。引入一个Timer吧。它能在指定时间后 只执行一次某个函数。你可以把bc操作都当地Timer控制的任务里去


import time
from threading import Timer

def init(context):
    context.i=0
    settimer(msg, 1000)

   
def msg(context):
    print('tx')
    if context.i<5:
        context.i+=1
        print('111')
    else:
        t = Timer(1,kill(context))
        t.start()

def handle_bar(context):   
    pass
def kill(context):
    killtimer(msg)
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

19

主题

70

帖子

70

积分

等级: 免费版

注册:
2023-1-30
曾用名:
发表于 2023-3-24 14:26 | 显示全部楼层
技术009 发表于 2023-3-13 14:56
你这个只能把 BC 都放到一个只执行一次的任务里了。引入一个Timer吧。它能在指定时间后 只执行一次某个函数 ...

非常感谢,我下周好好实践一下。不懂的再回来请教你们
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 微信登录

本版积分规则

手机版|小黑屋|上海金之塔信息技术有限公司 ( 沪ICP备13035422号 )

GMT+8, 2024-11-16 18:40 , Processed in 0.217384 second(s), 22 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表