以文本方式查看主题 - 金字塔客服中心 - 专业程序化交易软件提供商 (http://weistock.com/bbs/index.asp) -- 高级功能研发区 (http://weistock.com/bbs/list.asp?boardid=5) ---- context对象在Cython下的传递 (http://weistock.com/bbs/dispbbs.asp?boardid=5&id=176328) |
-- 作者:滚雪球 -- 发布时间:2020/5/29 10:52:16 -- context对象在Cython下的传递 因为各种原因需要将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): ...... |
-- 作者:yukizzc -- 发布时间:2020/5/29 13:55:59 -- 不用传参数,context是一个全局对象你直接全局共享就行了 |
-- 作者:滚雪球 -- 发布时间:2020/5/29 20:19:12 -- 问题在于settimer和killtimer要求函数必须有context参数,但是带参数编译过后的pyd又报类型不对 Argument \'context\' has incorrect type (expected str, got context) 我在想是否能够指定一下context这个参数的类型? settimer 设定计时器—定时触发函数原型
设定计时器—定时触发,仅"paper_trading"模式有效 注意:function函数一定要包含(并且只能包含)context |
-- 作者:滚雪球 -- 发布时间:2020/5/29 20:39:13 -- 还有一个办法就是自己写一个死循环,这样可以运行,但是退出的时候怎么结束这个进程? def init(context):
while True: run(context) time.sleep(1) |
-- 作者:yukizzc -- 发布时间:2020/6/1 9:35:33 -- import time
不是很明白范例里这个不是可以的吗?退出时候杀死计时器 |
-- 作者:滚雪球 -- 发布时间:2020/6/1 19:52:43 --
如果不用Cython编译的话是没有问题的,但是编译后的pyd就不能运行了 总是报参数类型不对的错误 你可以用Cython编译一下示范代码再试试 [此贴子已经被作者于2020/6/1 19:54:12编辑过]
|
-- 作者:滚雪球 -- 发布时间:2020/6/8 13:03:16 -- 找到原因了,是我自己的问题,指定数据类型的时候出错了
|