pycharm中多进程踩坑记录--Python,


目录
  • pycharm多进程踩坑–Python
    • 所遇到的情况
    • 执行的代码
  • 解决办法
    • 运行结果正常
  • 总结

    pycharm多进程踩坑–Python

    所遇到的情况

    如下:

    在进程中创建类实例,回调函数去获取实例时,报如下错误,注意在cmd和linux下面运行是没问题的。

    执行的代码

    如下:

    # --coding: utf-8 --
    # @User: JasonHU
    # @Time: 2020/11/25 21:11
    # @IDE: Pycharm
    # author: hzc
    import multiprocessing as mp
    import time
    
    
    class test:
        def __init__(self, x):
            self.x = x
    
        def printf(self):
            print(self.x)
    
    
    
    def foo_pool(x, y):
        time.sleep(5)
        instance = test(x * x + y)
        return instance
    
    
    result_list = []
    
    
    def log_result(result):
        # This is called whenever foo_pool(i) returns a result.
        # result_list is modified only by the main process, not the pool workers.
        # result_list.append(result)
        print(type(result))
    
    
    def apply_async_with_callback():
        pool = mp.Pool(1)
        for i in range(10):
            pool.apply_async(foo_pool, args=(i, 2), callback=log_result)
        pool.close()
        pool.join()
        print(result_list)
    
    
    if __name__ == '__main__':
        apply_async_with_callback()
    
    

    解决办法

    我在网上找了很久都没有找到解决方案

    由于考虑到是pycharm的问题

    因而改变了一下pycharm的版本(从2020.2.3->2018.3.7)

    运行结果正常

    如下:

    总结

    以上为个人经验,希望能给大家一个参考,也希望大家多多支持3672js教程。

    您可能感兴趣的文章:
    • python3 设置多进程名称并在ps命令中可见(Centos7 系统)
    • Python使用multiprocessing如何实现多进程
    • Python中多进程处理的Process和Pool的用法详解
    • python多进程并发的实现示例
    • Python多进程Process和管道Pipe的使用方式
    • Python使用logging实现多进程安全的日志模块

    评论关闭