python多进程运行死机_无法使多进程同时运行进程

博主通过重构代码,解决了Python多进程运行时出现的死机问题。创建了一个`TaskRunner`类,该类使用队列和线程来管理任务执行,确保任务能够正常运行。在`_worker`函数中,任务从队列获取并执行,如果执行时出现异常,可以根据配置停止任务执行。通过`add_task`添加任务,并通过`wait_for_tasks`等待所有任务完成。重构后的代码使得多进程任务执行流畅。
摘要由CSDN通过智能技术生成

修复了我的多处理问题-并实际切换了线程。我不知道到底是什么修复了它的想法-我只是重新设计了所有的东西,让工人和任务,什么不做,事情现在都在飞。以下是我所做的基本工作:import abc

from Queue import Empty, Queue

from threading import Thread

class AbstractTask(object):

"""

The base task

"""

__metaclass__ = abc.ABCMeta

@abc.abstractmethod

def run_task(self):

pass

class TaskRunner(object):

def __init__(self, queue_size, num_threads=1, stop_on_exception=False):

super(TaskRunner, self).__init__()

self.queue = Queue(queue_size)

self.execute_tasks = True

self.stop_on_exception = stop_on_exception

# create a worker

def _worker():

while self.execute_tasks:

# get a task

task = None

try:

task = self.queue.get(False, 1)

except Empty:

continue

# execute the task

failed = True

try:

task.run_task()

failed = False

finally:

if failed and self.stop_on_exception:

print('Stopping due to exception')

self.execute_tasks = False

self.queue.task_done()

# start threads

for i in range(0, int(num_threads)):

t = Thread(target=_worker)

t.daemon = True

t.start()

def add_task(self, task, block=True, timeout=None):

"""

Adds a task

"""

if not self.execute_tasks:

raise Exception('TaskRunner is not accepting tasks')

self.queue.put(task, block, timeout)

def wait_for_tasks(self):

"""

Waits for tasks to complete

"""

if not self.execute_tasks:

raise Exception('TaskRunner is not accepting tasks')

self.queue.join()

我所要做的就是创建一个TaskRunner并向其添加任务(数千个),然后调用wait_for_tasks()。所以,很明显,在我所做的重新架构中,我“修复”了我遇到的其他一些问题。不过很奇怪。在

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值