使用jupyter运行multiprocessing多进程库的问题

在Jupyter Notebook自定义了函数,然后调用multiprocess库进行多进程处理,发现程序一直处于运行状态,不出结果也不结束,而在Pycharm中则正常运行,难道是.ipynb格式的自定义函数不支持多进程?Jupyter用于数据分析还是很好用很方便的,但是有些大文件的运行如果不支持多进程的话很费时间,比如量化回测等,这个问题需要解决。

Jupyter中源代码:

import multiprocessing

# 定义一个简单的处理函数
def process_value(value):
    return value * 2

def main():
    # 原始的大列表
    original_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

    # 创建一个进程池
    pool = multiprocessing.Pool()

    # 使用进程池的map函数将处理函数应用于原始列表的每个值
    processed_list = pool.map(process_value, original_list)

    # 关闭进程池
    pool.close()
    pool.join()

    # 打印结果
    print("原始列表:", original_list)
    print("处理后的列表:", processed_list)

if __name__ == "__main__":
    main()

直接运行是没有结果的,且程序也不会自动停止。

解决办法:
先把代码写进.py文件中,比如在Pycharm中写好后保存,然后在Jupyter Notebook中通过import导入就可以直接运行。
例: 把上述代码保存到test.py文件中。

from test import process_value, main
import multiprocessing

if __name__ == "__main__":
	
	main()
	

这样就能正常运行了。

注意,是只要把要调用的函数封装到.py文件就行,其他的没要求。
比如上述的代码还可以在Jupyter Notebook中这么写:

import multiprocessing
from test import process_value

if __name__ == "__main__":

	original_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

    pool = multiprocessing.Pool()

	# 此处只调用process_value函数
    processed_list = pool.map(process_value, original_list)

    pool.close()
    pool.join()

    print("原始列表:", original_list)
    print("处理后的列表:", processed_list)
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值