speedup
iotools_tmp
run_func_with_timeout_process_notwin
- dramkit.speedup.iotools_tmp.run_func_with_timeout_process_notwin(func, *args, timeout=10, logger_timeout=None, timeout_show_str=None, kill_when_timeout=True, **kwargs)
- 限定时间(timeout秒)执行函数func,若限定时间内未执行完毕,返回Noneargs为tuple或list,为func函数接受的参数列表
with_timeout_process_notwin
- dramkit.speedup.iotools_tmp.with_timeout_process_notwin(timeout=30, logger_error=None, logger_timeout=None, timeout_show_str=None, kill_when_timeout=True)
- 作为装饰器在指定时间timeout(秒)内运行函数,超时则结束运行通过控制线程实现
Examples
1import os 2import pandas as pd 3from dramkit.gentools import tmprint 4 5df1 = pd.DataFrame([[1, 2], [3, 4]]) 6df2 = pd.DataFrame([[5, 6], [7, 8]]) 7df1.to_excel('df.xlsx') 8TIMEOUT = 3 9 10@with_timeout_process_notwin(TIMEOUT) 11def func(x): 12 with open('df.xlsx') as f: 13 tmprint('sleeping...') 14 time.sleep(5) 15 df2.to_excel('df.xlsx') 16 return x 17 18def test(): 19 res = func('test') 20 print('res:', res) 21 os.remove('df.xlsx')
>>> test()
func
- dramkit.speedup.iotools_tmp.func(x)
test
- dramkit.speedup.iotools_tmp.test()
multi_process_concurrent
multi_process_concurrent
- dramkit.speedup.multi_process_concurrent.multi_process_concurrent(func, args_list, keep_order=True, multi_line=None)
多进程,同一个函数执行多次
- Parameters:
func (function) – 需要多进程运行的目标函数
args_list (list) – 每个元素都是目标函数func的参数列表
keep_order (bool) –
是否保持输入args_list与输出results参数顺序一致性
Caution
若keep_order为True,则func的格式应转化为:
def func(args):return f(*args)multi_line (int, None) – 最大进程数,默认等于len(args_list)
- Returns:
results – 每个元素对应func以args_list的元素为输入的返回结果
- Return type:
list
Note
该函数通过import导入在Windows下会出错
multi_thread
SingleThread
- class dramkit.speedup.multi_thread.SingleThread(func, fargs=(), fkwargs={}, logger=None, **kwargs)
Bases:
Thread
单个线程任务参考:- __init__(func, fargs=(), fkwargs={}, logger=None, **kwargs)
- Parameters:
func (function) – 目标函数
fargs (tuple, list) – 目标函数func接收的位置参数
fkwargs (None, dict) – 目标函数func接收的关键字参数
logger (Logger, None) – 日志记录器
**kwargs (threading.Thread接收的其他参数) –
- get_result()
获取执行结果
- globaltrace(frame, event, arg)
- localtrace(frame, event, arg)
- run()
执行目标函数func,获取返回结果
- stop_thread()
multi_thread_threading
- dramkit.speedup.multi_thread.multi_thread_threading(func, args_list, logger=None)
多线程,同一个函数执行多次
- Parameters:
func (function) – 需要多线程运行的目标函数
args_list (list) – 每个元素都是目标函数func的参数列表
logger (Logger) – logging库的日志记录器
- Returns:
results – 每个元素对应func以args_list的元素为输入的返回结果
- Return type:
list
multi_thread_concurrent
- dramkit.speedup.multi_thread.multi_thread_concurrent(func, args_list, multi_line=None, keep_order=True)
多线程,同一个函数执行多次
- Parameters:
func (function) – 需要多线程运行的目标函数
args_list (list) – 每个元素都是目标函数func的参数列表
multi_line (int, None) – 最大线程数,默认等于len(args_list)
keep_order (bool) – 是否保持输入args_list与输出results参数顺序一致性,默认是
- Returns:
results – 每个元素对应func以args_list的元素为输入的返回结果
- Return type:
list