文章目录

  • 测试用的代码
  • 错误
  • 解决方法

测试用的代码

下面每一个对应一个jupyter notebook的单元格

import time
from multiprocessing import Process, Queue
def generator():c = 0while True:time.sleep(1.0) # read somethingyield cc += 1
%%timeds = generator()
for i in range(3):item = next(ds)time.sleep(1.0)  # do somethingprint(item)
0
1
2
CPU times: user 3.27 ms, sys: 456 µs, total: 3.73 ms
Wall time: 6.01 s
def kernel(func, q: Queue):ds = func()while True:item = next(ds)q.put(item)
def multi_generator(func):q = Queue()p = Process(target=kernel, args=(func, q))p.start()while True:item = q.get()yield item

在windows下运行这个单元格的话,会一直显示在运行,

%%timeds = multi_generator(generator)
for i in range(3):item = next(ds)time.sleep(1.0)print(item)

错误

运行上面的代码,后台会报如下错

Traceback (most recent call last):File "<string>", line 1, in <module>File "D:\Anaconda\envs\AIE31\lib\multiprocessing\spawn.py", line 105, in spawn_mainexitcode = _main(fd)File "D:\Anaconda\envs\AIE31\lib\multiprocessing\spawn.py", line 115, in _mainself = reduction.pickle.load(from_parent)
AttributeError: Can't get attribute 'kernel' on <module '__main__' (built-in)>

解决方法

1、些处解决方案,是利用Windows 10 下的WSL的Linux系统解决的。
怎样配置WSL,请参考链接https://blog.csdn.net/jasneik/article/details/123782018

直接打开Ubuntu 控制台,运行jupyter notebook,一般不会像Windows下的会自动跳转,可以把jupyter notebook含token的链接拷贝到浏览器打开。类似如下的链接

然后把上面的代码拷,再运行,就OK了。

%%timeds = multi_generator(generator)
for i in range(3):item = next(ds)time.sleep(1.0)print(item)
0
1
2
CPU times: user 9.26 ms, sys: 1.38 ms, total: 10.6 ms
Wall time: 4.06 s

2、可以参考此方面,是把方法写到临时文件(我没有试过)
https://blog.csdn.net/e274794140/article/details/87286190

Windows下 jupyter notebook 运行multiprocessing 报错的问题与解决方法相关推荐

  1. windows下 python 使用 pip 安装TA-Lib报错的原因及解决方法

    windows下 python 使用 pip 安装TA-Lib报错的原因及解决方法 问题环境 问题描述 问题原因 & 解决办法 问题环境 Windows 10 x64 .python 3.8. ...

  2. Windows net start mysql 启动MySQL服务报错 发生系统错误 5 解决方法

    net start mysql 启动MySQL服务报错 发生系统错误 5 解决方法 1-错误详情 2-单次解决方法 2.1-目录 C:WindowsSystem32 -> 找到 cmd.exe ...

  3. mysql source导入报错ERROR 1366的解决方法

    mysql source导入报错ERROR 1366的解决方法 参考文章: (1)mysql source导入报错ERROR 1366的解决方法 (2)https://www.cnblogs.com/ ...

  4. Python 报错 SyntaxError: invalid syntax 解决方法

    Python 报错 SyntaxError: invalid syntax 解决方法 参考文章: (1)Python 报错 SyntaxError: invalid syntax 解决方法 (2)ht ...

  5. vue 报错unknown custom element解决方法

    vue 报错unknown custom element解决方法 参考文章: (1)vue 报错unknown custom element解决方法 (2)https://www.cnblogs.co ...

  6. sqlyog for MySQL远程连接的时候报错mysql 1130的解决方法

    通过Navicat for MySQL远程连接的时候报错mysql 1130的解决方法 今天在用远程连接Mysql服务器的数据库,不管怎么弄都是连接不到. 错误代码是1130,ERROR 1130: ...

  7. VMware报错“锁定文件失败“解决方法

    VMware报错"锁定文件失败"解决方法 参考文章: (1)VMware报错"锁定文件失败"解决方法 (2)https://www.cnblogs.com/cb ...

  8. canvas生成图片toDataURL报错的原因和解决方法

    canvas生成图片toDataURL报错的原因和解决方法 参考文章: (1)canvas生成图片toDataURL报错的原因和解决方法 (2)https://www.cnblogs.com/suna ...

  9. uni-app真机调试报错request:fail abort解决方法

    uni-app真机调试报错request:fail abort解决方法 参考文章: (1)uni-app真机调试报错request:fail abort解决方法 (2)https://www.cnbl ...

最新文章

  1. 一个事务中 可以查询自己未提交的数据吗_数据库事务的方方面面
  2. 同一MODBUS读写多(两)个BH32角度传感器
  3. CSS3 实用技巧:制作三角形
  4. 多线程-threading和进程VS线程(python 版)
  5. 微信小程序 获取OpenId
  6. 算法题存档20190206
  7. 说说中国的图书出版业者-读《小学奥数举一反三(5年级A版)》和《2010注册建筑师建筑结构考试强化模拟试题集》有感...
  8. python-31:然而我发现结果并不是我想要的
  9. JavaScript 取得当前页面的URL网址参数
  10. mysql sum 删除_如果mysql磁盘满了,会发生什么?还真被我遇到了~
  11. notepad2正则表达式替换字符串
  12. Win10系统定时开关机
  13. 64位MicrosoftOfficeWord加载EndnoteX7
  14. JavaCV入门教程目录(JavaCV从入门到实战,JavaCV指南手册,免费JavaCV教程)
  15. 大数据第三季--sqoop(day1)-徐培成-专题视频课程
  16. python 等频分箱_数据分箱:等频分箱,等距分箱,卡方分箱,计算WOE、IV
  17. 你会用PPT中的图片占位符吗?超级好用,不错的技能
  18. 常用手机尺寸以及分辨率
  19. GitHub上真的有超过4000万软件开发人员吗?差远了!
  20. 对话绿盟科技丨云原生安全研究与实践

热门文章

  1. w3c 跨域请求规范
  2. 【LOJ】#2184. 「SDOI2015」星际战争
  3. Mysql 如何设置字段自动获取当前时间,附带添加字段和修改字段的例子
  4. ibatis中使用List作为传入参数的使用方法及 CDATA使用
  5. udp包大小选折及原因(mtu)
  6. jQuery实现分页
  7. vue.js开发环境搭建
  8. css --- 圣杯布局
  9. angular --- ngDialog关闭当前层
  10. es6 --- Proxy的属性(get、set除外)