python创建新进程_需要在Windows / Python中快速创建大量新进程

为了测试一些安全软件,我需要能够在

Windows中创建一个大的(可配置的)新进程(不是线程!),非常快,让它们存在一段(可配置的)时间,然后干净地终止.这些过程根本不应该做任何事情 – 只存在指定的持续时间.

最终,我希望能够运行如下:

C:\> python process_generate.py --processes=150 --duration=2500

它可以非常快速地创建150个新进程,使它们在2500毫秒内保持活动状态,然后让它们尽快终止.

作为一个起点,我跑了

from multiprocessing import Process

import os

def f():

pass

if __name__ == '__main__':

import datetime

count = 0

startime = datetime.datetime.now()

while True:

p = Process(target=f)

p.start()

p.terminate()

count += 1

if count % 1000 == 0:

now = datetime.datetime.now()

print "Started & stopped d processes in %s seconds" % (count, str(now-starttime))

并且发现我可以在笔记本电脑上连续创建和终止大约70个进程/秒,创建的进程会立即终止.约70个过程/秒速率持续约一小时的持续时间.

当我将代码更改为

from multiprocessing import Process

import os

import time

def f_sleep():

time.sleep(1)

if __name__ == '__main__':

import datetime

starttime = datetime.datetime.now()

processes = []

PROCESS_COUNT = 100

for i in xrange(PROCESS_COUNT):

p = Process(target=f_sleep)

processes.append(p)

p.start()

for i in xrange(PROCESS_COUNT):

processes[i].terminate()

now = datetime.datetime.now()

print "Started/stopped %d processes in %s seconds" % (len(processes), str(now-starttime))

并为PROCESS_COUNT尝试了不同的值,我预计它会比它更好地扩展.我得到了不同的PROCESS_COUNT值的以下结果:

> 20个过程在0.72秒内完成

> 1.个过程在1.45秒内完成

在3.68秒内完成> 50个过程

> 14个过程在14秒内完成

> 43个过程在43秒内完成

> 77个过程在77秒内完成

> 111个过程在111秒内完成

这不是我的预期 – 我希望能够以合理线性的方式扩展并行进程计数,直到我遇到瓶颈,但我似乎几乎是直接打击了进程创建的瓶颈.根据我运行的第一个代码,我肯定希望在遇到进程创建瓶颈之前能够创建接近70个进程/秒的东西.

没有完整的规格,笔记本电脑运行完全修补的Windows XP,具有4Gb RAM,否则是空闲的,是相当新的;我认为这不会很快成为瓶颈.

我在使用我的代码做了什么明显的错误,或者在12个月大的笔记本电脑上创建的XP / Python并行进程是否真的效率低下?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值