RuntimeError: An attempt has been made to start a new process before the current pr
时间:2019-02-22
本文章向大家介绍RuntimeError: An attempt has been made to start a new process before the current pr,主要包括RuntimeError: An attempt has been made to start a new process before the current pr使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
pytorch 加载数据时报错:
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.
from torch.utils.data import DataLoader
from text_loader import TextDataset
print("hello")
if __name__=="__main__": #必须加name ==maiin才不会报错,多线程问题
dataset = TextDataset()
train_loader = DataLoader(dataset=dataset,
batch_size=3,
shuffle=True,
num_workers=2)
for i, (src, target) in enumerate(train_loader):
print(i, "data:", src)
print("target:", target)
break
输出:
hello
hello
hello
这里输出了三个hello,因为两个进程加自身一个进程,共三个,
原因:多进程需要在main函数中运行,
解决方法1:
加main函数,在main中调用
解决方法2:
num_workers改为0,单进程加载
from torch.utils.data import DataLoader
from text_loader import TextDataset
print("hello")
if __name__=="__main__": #必须加name ==maiin才不会报错,多线程问题
dataset = TextDataset()
train_loader = DataLoader(dataset=dataset,
batch_size=3,
shuffle=True,
num_workers=0)
for i, (src, target) in enumerate(train_loader):
print(i, "data:", src)
print("target:", target)
break
改为num_workers=0后输出一个hello,进程为1个
- Python实现守护进程
- 初探Anaconda——最省心的Python版本和第三方库管理
- Linux环境下JDK/Eclipse一键安装脚本
- (31) 剖析Arrays / 计算机程序的思维逻辑
- 应用自然语言处理(NLP)解码电影
- 不引入新的数组,实现数组元素交换位置函数
- (30) 剖析StringBuilder / 计算机程序的思维逻辑
- Java初始化顺序
- ConcurrentHashMap使用示例
- (40) 剖析HashMap / 计算机程序的思维逻辑
- nginx配置https(亲测可用)
- linux中无 conio.h的解决办法
- 运用适配器模式应对项目中的变化
- 开车啦!小爬虫抓取今日头条街拍美女图
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- MATLAB批量读取一个文件夹下的图片
- python next()迭代器完成会引发StopIteration异常
- 没想到,Git居然有3种“后悔药”!
- JetCache埋点的骚操作,不服不行啊
- StringBuider 在什么条件下、如何使用效率更高?
- SpringCache与redis集成,优雅的缓存解决方案
- 理解一下5种IO模型、阻塞IO和非阻塞IO、同步IO和异步IO
- WinXP的MS08-067漏洞利用复现和解决方案
- 实用FRIDA进阶:内存漫游、hook anywhere、抓包
- 聊聊claudb的server command
- BFE.dev前端刷题88 - 在JavaScript中实现负索引
- Springboot 原理
- Qt音视频开发17-海康sdk解码
- pytest文档47-allure报告添加用例失败截图
- [060]监听应用的前后台切换