multiprocess模块使用进程池调用apply_async()提交的函数及回调函数不执行问题

在使用multiprocessing模块时,遇到进程池apply_async提交的实例方法不执行且回调函数失效的情况。问题在于同步队列可能导致阻塞,导致任务未执行。若函数有参数,需以元组形式传入,并在最后一个参数后加逗号。未正确传递参数可能导致任务不执行。目前尚未找出根本原因,寻求高人指点。
摘要由CSDN通过智能技术生成


使用multiprocesss模块遇到各种各样的问题,这次遇到的问题是调用进程池对象的 apply_async() 方法,往进程池传递一个实例方法(该实例方法里有一段代码是往同步队列里放入数据),然后发现往进程池扔的任务(即实例方法)不会被执行,回调方法也不执行。心塞~


以下是出现问题的代码

import ctypes
import datetime
import random

import time

from multiprocessing import Queue
from multiprocessing.pool import Pool

from multiprocessing import Value


class entry(object):
    def __init__(self, s: str, queue: Queue):
        self.s = s
        self.queue = queue
        # self.counter = c_uint

    def cutString(self):
        index = random.randint(0, len(self.s) - 4)
        time.sleep(1)
        i = random.randint(0, 2)
        print("randint(0, 2) = {}".format(i))
        return self.s[index:index + 2]

    
评论 16
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值