Python进程和;“无法分配内存”;
在我的python代码中,我使用抓取python库并尝试在ope python脚本中打开3个站点 我当前的代码:Python进程和;“无法分配内存”;,python,Python,在我的python代码中,我使用抓取python库并尝试在ope python脚本中打开3个站点 我当前的代码: from grab import Grab ... g = Grab(interface=ip, headers=headers) a = g.go('http://site1.com'); g = Grab(interface=ip, headers=headers) b = g.go('http://site2.com'); g = Grab(interface=ip,
from grab import Grab
...
g = Grab(interface=ip, headers=headers)
a = g.go('http://site1.com');
g = Grab(interface=ip, headers=headers)
b = g.go('http://site2.com');
g = Grab(interface=ip, headers=headers)
c = g.go('http://site3.com');
如果我运行10个python脚本,这段代码就可以正常工作
但我认为最好是同时打开所有连接(在打开站点“b”之前加载站点“a”时无需等待),我尝试了以下过程:
pa = Process(target=m_a, args=(ip))
pb = Process(target=m_b, args=(ip))
pc = Process(target=m_c, args=(ip))
pa.start()
pb.start()
pc.start()
但当我尝试运行5个以上的python进程时,我看到“无法分配内存”消息
为什么这段代码只在一个python文件中工作,而当我尝试通过进程为每个站点请求运行它时,“无法分配内存”
我已经使用python进程来运行这个python脚本,
还有我的名字main'。
在第一个python(运行此脚本)中,我使用以下代码:
if __name__ == '__main__':
jobs = []
for f in [exit_error, exit_ok, return_value, raises, terminated]:
print 'Starting process for', f.func_name
j = multiprocessing.Process(target=f, name=f.func_name)
jobs.append(j)
j.start()
我使用VPS OpenVZ 512
错误报告:
Process Process-18:
Traceback (most recent call last):
File "/usr/lib/python2.7/multiprocessing/process.py", line 258, in _bootstrap
self.run()
File "/usr/lib/python2.7/multiprocessing/process.py", line 114, in run
self._target(*self._args, **self._kwargs)
File "/root/_scripts/bf/check_current.py", line 140, in worker
p.start()
File "/usr/lib/python2.7/multiprocessing/process.py", line 130, in start
self._popen = Popen(self)
File "/usr/lib/python2.7/multiprocessing/forking.py", line 120, in __init__
self.pid = os.fork()
OSError: [Errno 12] Cannot allocate memory
如果进程并行运行,那么您可能确实耗尽了RAM。打开任务管理器或其等效工具,并在运行时检查分配的总内存。我找到了一个用于设置python进程内存限制的好命令
ulimit -s 2000
我添加了完整的回溯