Files
my_wiki/raw/量化/abuquant-src/abupy/UtilBu/ABuOsUtil.py
T

77 lines
2.6 KiB
Python

# -*- encoding:utf-8 -*-
"""操作系统工具函数整合模块"""
from __future__ import print_function
from __future__ import absolute_import
from __future__ import division
import logging
from ..CoreBu import ABuEnv
from ..UtilBu.ABuDTUtil import catch_error
log_func = logging.info if ABuEnv.g_is_ipython else print
@catch_error()
def show_msg(title, msg, log=False):
"""
统一平台弹窗信息提示,被catch_error装饰,即不应该被提示中断程序,
特别长任务的情况下
:param title: 弹窗信息标题
:param msg: 弹窗信息内容
:param log: 是否通过logging.info打印信息
:return:
"""
# 由于catch_error忽略错误,所有主要信息还是先打印
if log:
log_func(u'{}\n{}'.format(title, msg))
if ABuEnv.g_is_mac_os:
from ..UtilBu.ABuMacUtil import show_msg as do_show_msg
else:
from ..UtilBu.ABuWinUtil import show_msg as do_show_msg
do_show_msg(title, msg)
def socket_bind_recv(socket_fn, cmd_handler):
"""
进程间socket或者共享内存通信,接受消息,处理消息,外层应处理catch_error
:param socket_fn: socket文件名称或者共享内存名称
:param cmd_handler: cmd处理函数,callable类型
"""
# TODO 使用ZeroMQ进行重新对接
if ABuEnv.g_is_mac_os:
from ..UtilBu.ABuMacUtil import socket_bind_recv as do_socket_bind_recv
else:
from ..UtilBu.ABuWinUtil import socket_bind_recv as do_socket_bind_recv
do_socket_bind_recv(socket_fn, cmd_handler)
def socket_send_msg(socket_fn, msg):
"""
进程间socket或全局共享内通信,发送消息,外层应处理catch_error
:param socket_fn: socket文件名称或者共享内存名称
:param msg: 字符串类型需要传递的数据,不需要encode,内部进行encode
"""
# TODO 使用ZeroMQ进行重新对接
if ABuEnv.g_is_mac_os:
from ..UtilBu.ABuMacUtil import socket_send_msg as do_socket_send_msg
else:
from ..UtilBu.ABuWinUtil import socket_send_msg as do_socket_send_msg
do_socket_send_msg(socket_fn, msg)
@catch_error(return_val=0)
def fold_free_size_mb(folder):
"""
统一平路径可用空间获取,被catch_error装饰,即不应该被提示中断程序,return_val=0,出错也返回0
:param folder: 路径或盘符信息
:return: folder下的可用空间大小
"""
if ABuEnv.g_is_mac_os:
from ..UtilBu.ABuMacUtil import fold_free_size_mb as do_fold_free_size_mb
else:
from ..UtilBu.ABuWinUtil import fold_free_size_mb as do_fold_free_size_mb
do_fold_free_size_mb(folder)