资讯专栏INFORMATION COLUMN

【Python学习】windows环境不能用的函数

googollee / 2253人阅读

摘要:普通的函数调用,调用一次,返回一次,但是调用一次,返回两次,因为操作系统自动把当前进程称为父进程复制了一份称为子进程,然后,分别在父进程和子进程内返回。子进程永远返回,而父进程返回子进程的。

一、Before

Python学习过程中,经常发现教程上讲的函数在本机上会报错:

AttributeError: "module" object has no attribute "***"

作为一个初学者,就会很懵逼的检查: 1、有没有写错函数名;2、是不是忘记引用这个函数了?3、检查下这个插件模块是否安装了?...(如果你很认同,就说明你找对地方了)

本篇文章将为大家介绍学习Python过程中windows环境的“坑”。

二、正文

由于和操作系统相关,所以这些“坑”来源于Python中的os模块~~~

1、os.uname()

python提供了查看当前操作系统的函数:

    os.name()
    #output:
    #nt--Windows系统
    #posix--Linux、Unix或Mac OS X

python还提供了一个查看操作系统详细信息的函数,就是os.uname(),在mac环境下执行输出如下结果。

os.uname()
#output:(sysname, nodename, release, version, machine)
#("Darwin", "iMac.local", "13.3.0", "Darwin Kernel Version 13.3.0: Tue Jun  3 21:27:35 PDT 2014; root:xnu-2422.110.17~1/RELEASE_X86_64", "x86_64")

但是在windows上,就会报错没有这个模块。
解决方案:
(1)获取hostname:socket.gethostname() 或 socket.gethostbyaddr(socket.gethostname())
(2)使用platform.uname()

import platform
print platform.uname()
#output:
#(system="Windows", node="hongjie-PC",release="7", version="6.1.7601", machine="x86", processor="x86 Family 16 Model 6 Stepping 3, AuthenticAMD")
2、os.fork()
  os.fork()  #新建进程
  #output:pid

Unix/Linux操作系统提供了一个fork()系统调用,它非常特殊。普通的函数调用,调用一次,返回一次,但是fork()调用一次,返回两次,因为操作系统自动把当前进程(称为父进程)复制了一份(称为子进程),然后,分别在父进程和子进程内返回。
子进程永远返回0,而父进程返回子进程的ID。这样做的理由是,一个父进程可以fork出很多子进程,所以,父进程要记下每个子进程的ID,而子进程只需要调用getppid()就可以拿到父进程的ID。

解决方案:
1、使用Python的multiprocessing模块的Process来创建进程

    import multiprocessing
    import os

def runChildProcess(name):
    print "Run Child Process,pname = {} , pid = {}".format(name,os.getpid())

if __name__ == "__main__":
    print "Run Parent Process,pid = {}".format(os.getpid())
    child = multiprocessing.Process(target=runChildProcess,args=("test",))
    print "+"*20
    child.start()
    child.join()
    print "-"*20
执行结果:
Run Parent Process,pid = 5540
++++++++++++++++++++
Run Child Process,pname = test , pid = 712
--------------------
三、After

本文持续更新...
如果有错误、或建议,请务必联系我,我会在看到消息后的第一时间改进!!!

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/40715.html

相关文章

  • 【小白+python+selenium库+图片爬取+反爬+资料】超详细新手实现(01)webdriv

    摘要:且本小白也亲身经历了整个从小白到爬虫初入门的过程,因此就斗胆在上开一个栏目,以我的图片爬虫全实现过程为例,以期用更简单清晰详尽的方式来帮助更多小白应对更大多数的爬虫实际问题。 前言: 一个月前,博主在学过python(一年前)、会一点网络(能按F12)的情况下,凭着热血和兴趣,开始了pyth...

    Half 评论0 收藏0
  • 使用Rust + Electron开发跨平台桌面应用 ( 一 )

    摘要:所以我们需要将打包成模块提供给进行调用。安装完之后我们执行,新建一个项目。需要注意的是编译的版本需要与运行的版本一致,否则会出现无法调用的情况。 前言 近段时间学习了Rust,一直想着做点什么东西深入学习,因为是刚学习,很多地方都不熟悉,所以也就不能拿它来做编译器这些,至于web开发,实际上我并不建议拿这个来学习一门语言,大概有几个方面,一是web开发的套路无非也就那么几个,对学习一门...

    DrizzleX 评论0 收藏0
  • 十年老Python程序员:给我一个链接,没有我不能爬的视频,只有我顶不住的视频

    摘要:算了算了,不整游戏了,反正你们也不爱看今天来试试把头条上扭腰上热门的那些妹子爬一爬,不知道我顶不顶得住二准备工作使用的环境专业版要用的第三方模块三大致流程鉴于你们不喜欢我啰嗦,但是流程呢,我还是要给你们写出来,所以我就单独把它列出来了。 ...

    JiaXinYi 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<