当前位置: 首页>>代码示例>>Python>>正文


Python Process.apply_async方法代码示例

本文整理汇总了Python中multiprocessing.Process.apply_async方法的典型用法代码示例。如果您正苦于以下问题:Python Process.apply_async方法的具体用法?Python Process.apply_async怎么用?Python Process.apply_async使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在multiprocessing.Process的用法示例。


在下文中一共展示了Process.apply_async方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。

示例1: tryforkwindows

# 需要导入模块: from multiprocessing import Process [as 别名]
# 或者: from multiprocessing.Process import apply_async [as 别名]
def tryforkwindows(n):
    if n == 1:
        print('Parent process %s.' % os.getpid())
        sec = 3
        p = Process(target=run_proc, args=('test', sec))
        print('Child process will start ...')
        p.start()
        childlast = 15
        while childlast >= 0:
            print('# Parent (%s) and its child (%s).' % (os.getpid(), p.pid))
            time.sleep(1)
            childlast -= 1

        # Not successful!
        # os.kill(p.pid, signal.CTRL_C_EVENT)
        # p.join()

        print('Parent (%s) kills child (%s)' % (os.getpid(), p.pid))
        p.terminate()
        print('Child process end.')

    if n == 2:
        print('Parent process %s.' % os.getpid())
        process_num = 16
        p = Pool(process_num)
        for i in range(process_num):
            p.apply_async(long_time_task, args=(i,))

        print('Waiting for all subprocesses done...')
        p.close()
        p.join()
        print('All subprocesses done.')

    if n == 3:
        cmd = 'ping www.baidu.com'
        print(cmd)
        r = subprocess.call(cmd.split())
        print('Exit code = ', r)

    if n == 4:
        q = Queue()
        pw = Process(target=q_write, args=(q,))
        pr = Process(target=q_read, args=(q,))
        pr.start()
        pw.start()
        pw.join()
        pr.terminate()

    return
开发者ID:chao98,项目名称:Python,代码行数:51,代码来源:tryfork.py

示例2: long_time_task

# 需要导入模块: from multiprocessing import Process [as 别名]
# 或者: from multiprocessing.Process import apply_async [as 别名]
"""如果要启动大量的子进程,可以用进程池的方式批量创建子进程"""
from multiprocessing import Pool
import os, time, random

def long_time_task(name):
    print('Run task %s (%s)...' % (name, os.getpid()))
    start = time.time()
    time.sleep(random.random() * 3)
    end = time.time()
    print('Task %s runs %0.2f seconds.' % (name, (end - start)))

if __name__=='__main__':
    print('Parent process %s.' % os.getpid())
    p = Pool(4)
    for i in range(5):
        p.apply_async(long_time_task, args=(i,))
    print('Waiting for all subprocesses done...')
    p.close()
    p.join()
    print('All subprocesses done.')
"""对Pool对象调用join()方法会等待所有子进程执行完毕,调用join()之前必须先调用close(),调用close()之后就不能继续添加新的Process了。
请注意输出的结果,task 0,1,2,3是立刻执行的,而task 4要等待前面某个task完成后才执行,这是因为Pool的默认大小在我的电脑上是4,因此,最多同时执行4个进程。这是Pool有意设计的限制,并不是操作系统的限制。如果改成:
p = Pool(5)
就可以同时跑5个进程。
由于Pool的默认大小是CPU的核数,如果你不幸拥有8核CPU,你要提交至少9个子进程才能看到上面的等待效果。"""

#子进程
"""很多时候,子进程并不是自身,而是一个外部进程。我们创建了子进程后,还需要控制子进程的输入和输出。
subprocess模块可以让我们启动一个子进程,然后控制其输入和输出
下面的例子演示了如何在Python代码中运行命令nslookup www.python.org,这和命令行直接运行的效果是一样的:"""
import subprocess
开发者ID:lxw15337674,项目名称:Language_learning,代码行数:33,代码来源:mulpro.py

示例3: print

# 需要导入模块: from multiprocessing import Process [as 别名]
# 或者: from multiprocessing.Process import apply_async [as 别名]
    p.join()
    print('Child process is end')


print('\n')


def longTimeTask(name):
    print('Run task {0} pid is {1}'.format(name, os.getpid()))
    start = time.time()
    time.sleep(random.random() * 3)
    end = time.time()
    print('Task {0} runs {1:.2f} seconds'.format(name, end - start))
# Pool
if __name__ == '__main__':
    print('Parent process is {0}'.format(os.getppid()))
    p = Pool(4)
    for i in range(5):
        p.apply_async(longTimeTask, args=(i,))
    print('Waiting all subprocess down')
    p.close()
    p.join()
    print('All process down')

print('\n')
# subprocess
if __name__ == '__main__':
    print('$ nslookup www.python.org')
    r = subprocess.call(['nslookup', 'www.python.org'])
    print('Exit code:', r)
开发者ID:DashShen,项目名称:Journey,代码行数:32,代码来源:MultiProcess.py

示例4: print

# 需要导入模块: from multiprocessing import Process [as 别名]
# 或者: from multiprocessing.Process import apply_async [as 别名]
	print("child process end.")

#线程池
import time,random
from multiprocessing import Pool
def long_time_task(name):
	print("child process %s(%s,%s) run"%(name,os.getpid(),os.getppid()))
	start=time.time()
	time.sleep(random.random()*3)
	end=time.time()
	print("Tast %s runs %0.2f seconds."%(name,end-start))
if __name__=="__main__":
	print("Parent process %s"%os.getpid())
	p=Pool(5)
	for i in range(10):
		p.apply_async(long_time_task,args=(i,)) #子进程是本身
	print("Waiting for all Processing done...")
	p.close()
	p.join()
	print('All subprocesses done.')

#子进程不是本身
import subprocess

print("nslookup rrs.focushow.cn")
r=subprocess.call("nslookup rrs.focushow.cn")
print("Exit code:%d"%r)


#进程间的通信
#Process之间肯定是需要通信的,操作系统提供了很多机制来实现进程间的通信。
开发者ID:chenmingd,项目名称:Python3,代码行数:33,代码来源:thread01.py


注:本文中的multiprocessing.Process.apply_async方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。