5.1.2 网络编程进阶---开启子进程的两种方式

当主进程开启子进程后,主进程会与子进程并行执行。当主进程执行后不会立马结束进程,而是会等子进程结束才结束,好去清理僵尸子进程(给子进程收尸)。

第一种方式:

from multiprocessing import Processimport time

def task(name):    print(‘%s is running‘ % name)    time.sleep(3)    print(‘%s is done‘ % name)

if __name__ == ‘__main__‘:    p = Process(target=task, kwargs={‘name‘: ‘子进程1‘})    # p = Process(target=task, args=(‘子进程1‘,))    p.start()  # 仅仅只是给操作系统发送了一个信号,然后继续往下执行,不会等待子进程执行完成。但是会等子进程结束后,能结束主进程。

print(‘主‘)

#会执行子进程执行结束后,才结束自己进程。

# 输出结果:# 主# 子进程1 is running# 子进程1 is done

第二种方式: 继承的方式
from multiprocessing import Processimport time

class MyProcess(Process):    # 继承Process类    def __init__(self, name):        super().__init__()        self.name = name

def run(self):   # 必须重写run方法        print(‘subprocess starting %s‘ % self.name)        time.sleep(3)        print(‘end subprocess %s‘ % self.name)

if __name__ == ‘__main__‘:    p = MyProcess(‘xxx‘)    p.start()     # start自动绑定到run方法    print(‘主线程‘)

# 输出结果:# 主线程# subprocess starting xxx# end subprocess xxx

原文地址:https://www.cnblogs.com/beallaliu/p/9189845.html

时间: 2024-10-19 15:20:54

5.1.2 网络编程进阶---开启子进程的两种方式的相关文章

开启子进程的两种方式,孤儿进程与僵尸进程,守护进程,互斥锁,IPC机制,生产者与消费者模型

开启子进程的两种方式 # # # 方式一: # from multiprocessing import Process # import time # # def task(x): # print('%s is running' %x) # time.sleep(3) # print('%s is done' %x) # # if __name__ == '__main__': # # Process(target=task,kwargs={'x':'子进程'}) # p=Process(tar

7 并发编程-(线程)-开启线程的两种方式

thread/英 /θred/ 美 /θr?d/  线程 1.threading模块介绍 multiprocess模块的完全模仿了threading模块的接口,二者在使用层面,有很大的相似性,因而不再详细介绍 2.开启线程的两种方式 2.1.方式一 from threading import Thread import time def task(name): print(f"{name} is running") time.sleep(2) print(f"{name} i

创建并开启子进程的两种方式

#开进程的方法一: import time import random from multiprocessing import Process def piao(name): print('%s piaoing' %name) time.sleep(random.randrange(1,5)) print('%s piao end' %name) p1=Process(target=piao,args=('egon',)) #必须加,号 p2=Process(target=piao,args=(

创建并开启子进程的两种方式2

#开进程的方法二: import time import random from multiprocessing import Process class Piao(Process): def __init__(self,name): super().__init__() self.name=name def run(self): print('%s piaoing' %self.name) time.sleep(random.randrange(1,5)) print('%s piao end

cocos2dx 网络编程(CCHttpRequest和CURL两个方式)

转自:http://blog.csdn.net/sg619262284/article/details/20144087 在使用之前需要设置一些参数:参考:http://blog.csdn.net/wangbin_jxust/article/details/9632771 在完成上面的操作后,还需要在链接器的输入里面添加一个参数pthreadVCE2.lib: 使用CCHttpRequest方法实现:(异步连接) void HallView::Qudian(){ //网络异步连接方法 cocos

python并发编程:多线程-开启线程的两种方式

一 threading模块介绍 multiprocess模块完全模仿了threading模块的接口,二者在使用层面,有很大的相似性 二 开启线程的两种方式 方式一 from threading import Thread import time def sayhi(name): time.sleep(2) print("%s say hello" % name) if __name__ == '__main__': t = Thread(target=sayhi, args=('mik

开启线程的两种方式,

'''目录1,开启线程的两种方式*****2,线程和进程的区别*****3,线程对象的其他方法和属性4,守护线程5,互斥锁6,死锁现象与递过锁7,信号量'''#1 开启线程的两种方式import timefrom threading import Thread def dask(name): print('%s is running '%name) time.sleep(1) print('%s is done'%name) t=Thread(target=dask,args=('egon',)

python全栈脱产第34天------开启进程的两种方式、join方法、进程对象其他相关的属性和方法、僵尸进程、孤儿进程、守护进程、互斥锁

一.开启进程的两种方式 方式一: from multiprocessing import Processimport time def task(name): print('%s is running' %name) time.sleep(3) print('%s is done' %name) # 在windows系统上,开启子进程的操作必须放到if __name__ == '__main__'的子代码中if __name__ == '__main__': p=Process(target=t

Java开启线程的两种方式

------<a href="http://www.itheima.com" target="blank">Java培训.Android培训.ios培训..Net培训</a>.期待与您交流!------ Java开启线程的两种方式: 方式一:成为线程(Thread)的儿子,即继承Thread类简单代码如下:class Student extends Thread{Student(String name){super(name);}public