Person-Attribute-Recognition-MarketDuke icon indicating copy to clipboard operation
Person-Attribute-Recognition-MarketDuke copied to clipboard

Cannot start a new process

Open raylooi opened this issue 5 years ago • 3 comments

(base) D:\codes\Person-Attribute-Recognition-MarketDuke-master>python train.py --data-path dataset --dataset duke --model resnet50

Traceback (most recent call last): File "", line 1, in File "D:\Anaconda\lib\multiprocessing\spawn.py", line 105, in spawn_main exitcode = _main(fd) File "D:\Anaconda\lib\multiprocessing\spawn.py", line 114, in _main prepare(preparation_data) File "D:\Anaconda\lib\multiprocessing\spawn.py", line 225, in prepare _fixup_main_from_path(data['init_main_from_path']) File "D:\Anaconda\lib\multiprocessing\spawn.py", line 277, in _fixup_main_from_path Traceback (most recent call last): File "train.py", line 101, in run_name="mp_main") File "D:\Anaconda\lib\runpy.py", line 263, in run_path images, indices, labels, ids, cams, names = next(iter(dataloaders['train'])) pkg_name=pkg_name, script_name=fname) File "D:\Anaconda\lib\site-packages\torch\utils\data\dataloader.py", line 193, in iter

  File "D:\Anaconda\lib\runpy.py", line 96, in _run_module_code

return _DataLoaderIter(self) File "D:\Anaconda\lib\site-packages\torch\utils\data\dataloader.py", line 469, in init mod_name, mod_spec, pkg_name, script_name) w.start() File "D:\Anaconda\lib\runpy.py", line 85, in _run_code

  File "D:\Anaconda\lib\multiprocessing\process.py", line 112, in start

exec(code, run_globals) File "D:\codes\Person-Attribute-Recognition-MarketDuke-master\train.py", line 101, in self._popen = self._Popen(self) images, indices, labels, ids, cams, names = next(iter(dataloaders['train'])) File "D:\Anaconda\lib\multiprocessing\context.py", line 223, in _Popen

  File "D:\Anaconda\lib\site-packages\torch\utils\data\dataloader.py", line 193, in __iter__

return _default_context.get_context().Process._Popen(process_obj) return _DataLoaderIter(self) File "D:\Anaconda\lib\multiprocessing\context.py", line 322, in _Popen

File "D:\Anaconda\lib\site-packages\torch\utils\data\dataloader.py", line 469, in init return Popen(process_obj)w.start()

File "D:\Anaconda\lib\multiprocessing\popen_spawn_win32.py", line 89, in init File "D:\Anaconda\lib\multiprocessing\process.py", line 112, in start reduction.dump(process_obj, to_child)self._popen = self._Popen(self)

File "D:\Anaconda\lib\multiprocessing\reduction.py", line 60, in dump File "D:\Anaconda\lib\multiprocessing\context.py", line 223, in _Popen ForkingPickler(file, protocol).dump(obj)return _default_context.get_context().Process._Popen(process_obj)

BrokenPipeError File "D:\Anaconda\lib\multiprocessing\context.py", line 322, in _Popen : [Errno 32] Broken pipereturn Popen(process_obj)

File "D:\Anaconda\lib\multiprocessing\popen_spawn_win32.py", line 46, in init prep_data = spawn.get_preparation_data(process_obj._name) File "D:\Anaconda\lib\multiprocessing\spawn.py", line 143, in get_preparation_data _check_not_importing_main() File "D:\Anaconda\lib\multiprocessing\spawn.py", line 136, in _check_not_importing_main is not going to be frozen to produce an executable.''') RuntimeError: An attempt has been made to start a new process before the current process has finished its bootstrapping phase.

    This probably means that you are not using fork to start your
    child processes and you have forgotten to use the proper idiom
    in the main module:

        if __name__ == '__main__':
            freeze_support()
            ...

    The "freeze_support()" line can be omitted if the program
    is not going to be frozen to produce an executable.

raylooi avatar May 10 '19 08:05 raylooi

does this mean the train.py needs to add "if name == 'main': "?

as in

if name == 'main':
model = train_model(model, criterion, optimizer, exp_lr_scheduler, num_epochs = args.num_epoch)

raylooi avatar May 10 '19 09:05 raylooi

but i still get the error. anyone knows what needs to be changed here?

raylooi avatar May 10 '19 09:05 raylooi

@raylooi Please put '' if name == ' main': '' before '' parser = argparse.ArgumentParser(description='Training') '', you can solve this problem.

ljx6666 avatar Jan 04 '20 10:01 ljx6666