因为各种原因需要将python代码用Cython编译后运行,如果直接使用def handle_bar(context)是可以正常运行的
但现在需要用settimer来自己控制,实际运行的程序是def run(context),如果不编译也是正常的,但是编译以后
settimer(run,1000)这句代码无法带入context参数,报一个错误,说是要求是str的类型,但实际上是context类型
有什么办法解决这个问题
代码如下:
def exit(context):
killtimer(run)
def init(context):
settimer(run,1000)
def handle_bar(context):
pass
def run(context):
......
不用传参数,context是一个全局对象你直接全局共享就行了
问题在于settimer和killtimer要求函数必须有context参数,但是带参数编译过后的pyd又报类型不对
Argument 'context' has incorrect type (expected str, got context)
我在想是否能够指定一下context这个参数的类型?
settimer 设定计时器—定时触发
函数原型
settimer (funciton, msec)
设定计时器—定时触发,仅"paper_trading"模式有效
注意:function函数一定要包含(并且只能包含)context
还有一个办法就是自己写一个死循环,这样可以运行,但是退出的时候怎么结束这个进程?
def init(context):
while True:
run(context)
time.sleep(1)
import time
def
init(context):
settimer(msg,10)
def
msg(context):
a = time.asctime( time.localtime(time.time()) )
print(a)
def
exit(context):
killtimer(msg)
不是很明白范例里这个不是可以的吗?退出时候杀死计时器
如果不用Cython编译的话是没有问题的,但是编译后的pyd就不能运行了
总是报参数类型不对的错误
你可以用Cython编译一下示范代码再试试
[此贴子已经被作者于2020/6/1 19:54:12编辑过]
找到原因了,是我自己的问题,指定数据类型的时候出错了