包,实际是更大规模的以目录形式存在的模块集合,包可以含子包,包区别于目录是包的目录下有一个空的__init__.py文件。包和模块一样有Python自带的包,也可以通过工具安装一些包,例如numpy就是数据科学领域比较常用的一个包,需额外安装,当然也可以自己开发一些包。
multiprocess包下有很多的模块,例如process模块,那么可以在一个示例程序里使用包multiprocess里的process模块。
from multiprocessing import Process import os def atest(name): print ("Process ID: %s" % (os.getpid())) print ("Parent Process ID: %s" % (os.getppid())) if __name__ == "__main__": proc = Process(target=atest, args=('nmask',)) proc.start() proc.join()
需要解释的是from multiprocessing import Process是从包multiprocess里引入Process, 但Process类定义在process.py文件里,包含Process类的process.py文件是在multiprocessing目录下的,故是multiprocessing包里的一个模块。通过Python交互环境可以查明这一点。
>>> from multiprocessing import Process
>>> help(Process)
Help on class Process in module multiprocessing.process:
class Process(__builtin__.object)
代码from multiprocessing import Process也可以这样去写from multiprocessing.process import Process这样写既写了包名又写了模块名即包.模块,其实在Python里一般还是直接用包名(偷懒),而少有既写包又写模块的。