Python创建进程,python创建线程

  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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: