开发工作如下:
使用Python写了一个FTP客户端组件,支持上传与下载,使用C调用该FTP客户端组件的上传与下载都成功。
问题点:
C调用上传与下载时,需要实时获取上传或者进度(即已经上传了多少,或者下载了多少),并把这个值复制到某个共享变量中,给其它线程读取使用(只读取)。
但是文件上传与下载的部分全是在Python中写的,进度也只有Python才能知道。
使用Python的线程机制,貌似也不能成功。
请问各位大神,谁遇到过类似的问题,并解决的?
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
方法一:python根据自己的逻辑把进度print到stdout中,c被动用popen读取它的stdout就能知道进度了。
方法二:python实现信号SIGUSR1打印进度到stdout,c用popen调起来python后,需要的时候发一个SIGUSR1,然后读取python输出的进度
方法三:转变思路,为啥要C调用Python这么别扭,用Python做主流程,需要用C的地方再编译成DLL,python通过ctypes调用
######项目全部是C,部分用C太麻烦的就用了python######可以设置回调方法。。由调用方设置回调方法,python 按进度调用回调方法。