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,若限定时间内未执行完毕,返回None
args为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