- 进程池存在,multiprocessing模块中.
- multiprocessing.Pool(processes=4)指定创建进程的个数。
- pool.apply_async 异步执行任务.
- callback的参数是,任务执行的返回值。
- error_callback,的参数是执行的错误信息。
import multiprocessing
import time
def task_1(name, age):
time.sleep(3)
# print(1 / 0)
print('name:', name, 'age:', age, '\n')
print('执行task1', '\n')
return '返回值'
def task_1_call_back(args):
print('task_1_call_back:', args, '\n')
def task1_error_callback(args):
print('test_error_callback:', args, '\n')
if __name__ == '__main__':
"""pool不能再外面,否则会报错"""
"""task_1_call_back 的参数就是 task 执行的返回值"""
"""task1_error_callback 的参数就是 task 执行错误的信息"""
pool = multiprocessing.Pool(4)
t = pool.apply_async(func=task_1,
args=('name', 'age'),
callback=task_1_call_back,
error_callback=task1_error_callback)
pool.close()
pool.join()
方法二:
import multiprocessing
import time
def test_run():
print('test_run....')
time.sleep(3)
return 'success'
def test_run_cal_back(args):
print('test_run_cal_back....', args)
class ProcessAsnyc(multiprocessing.Process):
def __init__(self, *args, action=None):
super(ProcessAsnyc, self).__init__()
self.args = args
self.action = action
def run(self):
"""
开始执行导出动作
:return:
"""
if len(self.args) > 0:
self.action(self.args)
else:
self.action()
if __name__ == '__main__':
process = ProcessAsnyc(action=test_run)
process.start()
process.close()