ImportError: sys.meta_path is None, Python is likely shutting down报错,求助

这篇博客主要讨论了在使用Python的multiprocessing模块时遇到的`ImportError: sys.meta_path is None`错误。错误出现在`multiprocessing/queues.py`文件中,可能由于Python正在关闭导致。博客提到了Queue类型,包括JoinableQueue和SimpleQueue,并指出未调用task_done()可能导致问题。此外,还提到了在数据加载过程中遇到的AssertionError,可能与`torch.utils.data.Dataloader`和自定义的`dataset.py`有关。
摘要由CSDN通过智能技术生成

Module implementing queues

multiprocessing/queues.py

Copyright © 2006-2008, R Oudkerk

Licensed to PSF under a Contributor Agreement.

all = [‘Queue’, ‘SimpleQueue’, ‘JoinableQueue’]

import sys
import os
import threading
import collections
import time
import weakref
import errno
import queues
#import dataloader
from queue import Empty, Full

import _multiprocessing

from . import connection
from . import context
_ForkingPickler = context.reduction.ForkingPickler

from .util import debug, info, Finalize, register_after_fork, is_exiting

Queue type using a pipe, buffer and thread

class Queue(object):

def __init__(self, maxsize=0, *, ctx):
    if maxsize <= 0:
        # Can raise ImportError (see issues #3770 and #23400)
        from .synchronize import SEM_VALUE_MAX as maxsize
    self._maxsize = maxsize
    self._reader, self._writer = connection.Pipe(duplex=False)
    self._rlock = ctx.Lock()
    self._opid = os.getpid()
    if sys.platform == 'win32':
        self._wlock = None
    else:
        self._wlock = ctx.Lock()
    self._sem = ctx.BoundedSemaphore(maxsize)
    # For use by concurrent.futures
    self._ignore_epipe = False

    self._after_fork()

    if sys.platform != 'win32':
        register_after_fork(self, Queue._after_fork)

def __getstate__(self):
    context.assert_spawning(self)
    return (self._ignore_epipe, self._maxsize, self._reader, self._writer,
            self._rlock, self._wlock, self._sem, self._opid)

def __setstate__(self, state):
    (self._ignore_epipe, self._maxsize, self._reader, self._writer,
     self._rlock, self._wlock, self._sem, self._opid) = state
    self._after_fork()

def _after_fork(self):
    debug('Queue._after_fork()')
    self._notempty = threading.Condition(threading.Lock())
    self._buffer = collections.deque()
    self._thread = None
    self._jointhread = None
    self._joincancelled = False
    self._closed = False
    self._close = None
    self._send_bytes = self._writer.send_bytes
    self._recv_bytes = self._reader.recv_bytes
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值