我使用了Python的多进程并使用以下代码等待所有进程完成:
```python ```
请注意,保留了HTML标记。
```python ```
请注意,保留了HTML标记。
...
results = []
for i in range(num_extract):
url = queue.get(timeout=5)
try:
print "START PROCESS!"
result = pool.apply_async(process, [host,url],callback=callback)
results.append(result)
except Exception,e:
continue
for r in results:
r.get(timeout=7)
...
我尝试使用pool.join但是出现错误:
Traceback (most recent call last):
File "C:\workspace\sdl\lxchg\walker4.py", line 163, in <module>
pool.join()
File "C:\Python25\Lib\site-packages\multiprocessing\pool.py", line 338, in joi
n
assert self._state in (CLOSE, TERMINATE)
AssertionError
为什么加入不起作用?等待所有进程的好方法是什么。
我的第二个问题是如何重新启动池中的某些进程?我需要这个来解决内存泄漏的问题。现在实际上我在所有进程完成任务后重建整个池(创建新对象池以重新启动进程)。
我需要的是:例如,我有4个进程在池中。然后进程获取它的任务,任务完成后我需要杀死进程并启动新进程(以刷新内存泄漏)。
multiprocessing/pool.py
存放在site-packages
而不是直接存放在Lib
中?如果您一直在对其进行修改,那么我们需要知道。 - aaronasterling