Python 多处理超时问题



我在python中使用多处理,尝试在超时后终止运行。但它不起作用,我不知道原因。

我举了一个例子,这似乎很容易。只需启动进程,2秒后,终止运行。但它对我不起作用。

你能帮我弄清楚吗?感谢您的帮助!

from amazonproduct import API
import multiprocessing
import time

AWS_KEY = '...'
SECRET_KEY = '...'
ASSOC_TAG  = '...'

def crawl():
    api = API(AWS_KEY, SECRET_KEY, 'us', ASSOC_TAG)
    for root in api.item_search('Beauty', Keywords='maybelline',
                                ResponseGroup='Large'):
        # extract paging information
        nspace = root.nsmap.get(None, '')
        products = root.xpath('//aws:Item', 
                             namespaces={'aws' : nspace})
        for product in products:
            print product.ASIN,
if __name__ == '__main__':
    p = multiprocessing.Process(target = crawl())
    p.start()
    if time.sleep(2.0):
        p.terminate()

好吧,这行不通:

if time.sleep(2.0):
    p.terminate()

time.sleep 不返回任何内容,因此上述语句始终等效于 if None:None False布尔上下文中,所以你去吧。

如果您希望它始终终止,请取出该if语句。 只是做一个裸露的time.sleep.

另外,错误:

p = multiprocessing.Process(target = crawl())

这不是在做你认为它正在做的事情。 您需要指定target=crawl,而不是target=crawl()。 后者在主线程中调用函数,前者将函数作为参数传递给Process然后并行执行它。

相关内容

  • 没有找到相关文章

最新更新