python子进程没有连接_Python错误集锦:multiprocessing没有真正启动多进程,子进程pid等于主进程...

错误提示:

在使用Python的multiprocessing启动多进程时,实际上没有启动多进程,看到的“子进程”id和主进程id是同一个:

'''

author: juzicode

address: www.juzicode.com

公众号: 桔子code/juzicode

'''

import os,time, multiprocessing

def func1():

proc_name = multiprocessing.current_process().name

proc_id = os.getpid()

print('进入子进程: pid = ', proc_id,' name=',proc_name)

loopcnt = 0

while loopcnt < 10:

loopcnt = loopcnt + 1

print('子进程: %s, loopcnt=%d' % (proc_id, loopcnt))

time.sleep(0.2)

print('退出子进程: ' , proc_id)

if __name__ == '__main__':

print('\n-----欢迎来到www.juzicode.com')

print('-----公众号: 桔子code/juzicode \n')

proc_name = multiprocessing.current_process().name

proc_id = os.getpid()

print('进入主进程: pid = ', proc_id,' name=',proc_name)

p1 = multiprocessing.Process(target=func1(), name='func1')

p1.start()

time.sleep(5)

print('退出主进程: ' ,proc_id)

运行该文件看到的主进程pid和子进程pid是一样的:

7e4bfc2652ebd53a5e1f33112f7ad503.png

错误原因:

1、该语句p1 = multiprocessing.Process(target=func1(), name=’func1′)试图启动一个子进程,但是target赋值的不是一个函数对象,而是函数返回值,我们知道函数的调用方式是函数名(),会导致该函数执行,而函数func1中没有显式地使用return语句,实际上返回的是一个None,所以target赋值的是一个None,所有该语句并没有启动一个子进程。

解决方法:

1、去掉func1()中的括号(),只使用func1:

p1 = multiprocessing.Process(target=func1, name='func1')

11f4dd98ea84bf6620d5a613e5a7482c.png

扩展内容:

关注微信公众号:“桔子code”,欢迎后台留言撩我,我会尽我所能为你解惑Python,C等编程知识

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值