首页 新闻 会员 周边

python关于多进程的问题

0
悬赏园豆:200 [已关闭问题] 关闭于 2021-10-17 02:51

业务介绍:
开始任务后,有一个日常任务,有一个临时任务,起两个进程。
然后在执行任务的时候,这两个进程各自创造一个进程池。分别执行各自的任务。代码如下:是可以得到结果的,但是呢,只要加上任何一个别的代码在循环中就不会去执行,向进程池中添加子进程的功能

import multiprocessing
import os, time

class TaskStart():

stop_temp_task = False

@staticmethod
def start_task():
    p_temp = multiprocessing.Process(target=TaskStart.start_temp_task)
    p_daily = multiprocessing.Process(target=TaskStart.start_daily_task)

    p_temp.start()
    p_daily.start()

    p_daily.join()
    p_temp.join()


@staticmethod
def start_temp_task():
    temp_task_pool = multiprocessing.Pool(processes=5)  # 临时任务进程池
    i = 0
    while (not TaskStart.stop_temp_task):
        i += 1
        temp_task_pool.apply_async(TaskStart.do_temp_task, args=(i,))

    temp_task_pool.close()
    temp_task_pool.join()

@staticmethod
def start_daily_task():
    temp_task_pool = multiprocessing.Pool(processes=5)  # 临时任务进程池
    i = 100
    while (not TaskStart.stop_temp_task):
        i += 1
        temp_task_pool.apply_async(TaskStart.do_daily_task, args=(i,))

    temp_task_pool.close()
    temp_task_pool.join()


@staticmethod
def do_temp_task(msg):
    t_start = time.time()
    print("%s开始执行,进程号为%d" % (msg, os.getpid()))
    time.sleep(5)
    t_stop = time.time()
    print(msg, "执行完毕,耗时%0.2f" % (t_stop - t_start))

@staticmethod
def do_daily_task(msg):
    t_start = time.time()
    print("%s日常任务正在执行,进程号为%d" % (msg, os.getpid()))
    time.sleep(10)
    t_stop = time.time()
    print(msg, "日常任务执行完毕,耗时%0.2f" % (t_stop - t_start))

if name == 'main':

TaskStart.start_task()


上边是正常的,假如添加入下两个代码,用来模拟,获取任务的时候,判断是哪个任务时候

只需要加个简单的业务 假如print就无法在进子进程了 结果如下

heyhx的主页 heyhx | 菜鸟二级 | 园豆:202
提问于:2021-10-17 02:06
< >
分享
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册