Python创建进程,python创建线程
仅供参考,转载时请注明出处。
进程创建-多重处理多重处理模块是多重处理模块的跨平台版本,提供了一个进程类来表示一个进程对象,可以理解为一个独立的进程,可以执行其他的事情。
两个while循环一起执行,而两个人在一个循环里买烟[root @ server 01 process]# vim test . py。
# -*-编码:utf-8 -*-
从多重处理导入流程
导入时间
def bug_ciggite():
虽然正确:
Print(《第一人称:胖老板来包兰利群》)
时间.睡眠(1)
def main():
#第一个人启动一个子流程,循环执行买烟操作。
p=进程(target=bug_ciggite)
开始()
#第二个人来找胖老板买烟
虽然正确:
打印(第二人:胖老板来包芙蓉王)
时间.睡眠(1)
if __name__==__main__ :
Main()执行如下:
[root @ server 01 process]# python test . py
第二人:胖老板来包芙蓉王。
第一个人:胖老板来包兰利群。
第二人:胖老板来包芙蓉王。
第一个人:胖老板来包兰利群。
第二人:胖老板来包芙蓉王。
第一个人:胖老板来包兰利群。
第二人:胖老板来包芙蓉王。
第一个人:胖老板来包兰利群。
第二人:胖老板来包芙蓉王。
第一个人:胖老板来包兰利群。从上面的执行来看,两个while周期买烟的操作并没有被阻止。例如,只有在第一循环没有完成的情况下,才能执行第二循环。而是可以通过两个循环同时直接进行。
创建子流程时,只需要传入一个函数及其参数,创建一个流程实例,然后用start()方法启动它。
这个操作和启动一个线程是一样的。进程pid打印上面代码的主进程和子进程的pid。
# -*-编码:utf-8 -*-
从多重处理导入流程
导入时间
导入操作系统
def bug_ciggite():
虽然正确:
Print(《第一人称:胖老板来包兰利群》)
print( print子进程的=% d % os.getpid())
时间.睡眠(1)
def main():
print( print main进程的=% d % os.getpid())
#第一个人启动一个子流程,循环执行买烟操作。
p=进程(target=bug_ciggite)
开始()
#第二个人来找胖老板买烟
虽然正确:
打印(第二人:胖老板来包芙蓉王)
时间.睡眠(1)
if __name__==__main__ :
Main()执行如下:
[root @ server 01 process]# python test . py
主打印过程的=1864
第二人:胖老板来包芙蓉王。
第一个人:胖老板来包兰利群。
打印子进程的Pid=1865
第二人:胖老板来包芙蓉王。
第一个人:胖老板来包兰利群。
打印子进程的Pid=1865
第二人:胖老板来包芙蓉王。
第一个人:胖老板来包兰利群过程。语法结构如下:
进程([组[,目标[,名称[,参数[,kwargs]]])
目标:如果传递了对函数的引用,这个子流程可以在这里执行代码。
Args:传递给target指定的函数的参数,作为元组传递。
Kwargs:将命名参数传递给target指定的函数。
名称:为流程设置一个名称,这是可选的。
Group:指定过程组,这在大多数情况下不使用。
流程创建实例对象的常用方法:
Start():发起人流程实例(创建子流程)
Is_alive():判断进程的子进程是否还活着。
Join([timeout]):是否等待子进程的执行完成,或者等待多少秒?
Terminate():不管任务是否完成,立即终止子进程。
由进程创建的实例对象的通用属性:
名称:当前进程的别名。默认值为Process-N,N是从1开始递增的整数。
Pid:当前进程的pid(进程号)
传递参数-买多少烟# -*-编码:utf-8 -*-
从多重处理导入流程
导入时间
导入操作系统
def bug_ciggite(名称,价格,**kwargs):
虽然正确:
Print(《第一人称:胖老板来包兰利群》)
print( print子进程的=% d % os.getpid())
打印(% s“%(价格,名称)”的“购买包%d”)
印刷品(夸脱)
时间.睡眠(1)
def main():
print( print main进程的=% d % os.getpid())
#第一个人启动一个子流程,循环执行买烟操作。
P=进程(target=bug _ ciggite,args=(兰利群,17),kwargs={m:20})
开始()
#第二个人来找胖老板买烟
虽然正确:
打印(第二人:胖老板来包芙蓉王)
时间.睡眠(1)
if __name__==__main__ :
Main()执行如下:
[root @ server 01 process]# python test . py
主印刷过程的=1904
第二人:胖老板来包芙蓉王。
第一个人:胖老板来包兰利群。
打印子流程的Pid=1905
买17袋兰利群。
{m: 20}
第二人:胖老板来包芙蓉王。
第一个人:胖老板来包兰利群。
打印子流程的Pid=1905
买17袋兰利群。
{m: 20}
第二人:胖老板来包芙蓉王。
第一个人:胖老板来包兰利群。
打印子流程的Pid=1905
买17袋兰利群。
{m: 20}
第二人:胖老板来包芙蓉王。
第一个人:胖老板来包兰利群。
打印子流程的Pid=1905
买17袋兰利群。
{m: 20}全局变量不在进程间共享。定义一个全局变量,分两个进程修改,然后分别打印出来,看是否一样。
比如定义一包烟的名称,两个流程,一个修改,一个未修改,分别打印。
# -*-编码:utf-8 -*-
从多重处理导入流程
导入时间
导入操作系统
Ciggite_name=兰利群
def bug_ciggite1():
Ciggite_name=芙蓉王
对于范围(3)中的I:
Print(第一人称:胖老板来收拾%s%烟名
时间.睡眠(1)
def bug_ciggite2():
对于范围(3)中的I:
Print(第二人:胖老板来收拾%s%烟名
时间.睡眠(1)
def main():
print( print main进程的=% d % os.getpid())
打印(主进程开始执行:我想购买%s%烟名)
#第一个人启动一个子流程,循环执行买烟操作。
p1=进程(target=bug_ciggite1)
p1.start()
#第二个人启动了一个购买香烟的子流程
p2=进程(target=bug_ciggite2)
p2.start()
打印(主进程完成执行:我想购买%s%烟名)
if __name__==__main__ :
Main()执行如下:
[root @ server 01 process]# python test . py
主印刷过程的=2014
主流程开始执行:我想买兰利群。
主流程执行结束:我想买兰利群。
第一人:胖老板来包芙蓉王。
第二个人:胖老板来包兰利群。
第二个人:胖老板来包兰利群。
第一人:胖老板来包芙蓉王。
第一人:胖老板来包芙蓉王。
第二个人:胖老板来包兰利群。
[root@server01 process]#从结果中可以看出,第一个进程把ciggite_name改成了芙蓉王,但是不影响主进程和子进程的值,还是兰利群。
说明子进程不能共享和修改全局变量,和线程不一样。
关注微信微信官方账号,回复【数据】,Python,PHP,JAVA,web,即可获取Python,PHP,JAVA,前端等视频数据。
来自海洋的渔夫原创作品,
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。