Python多处理超时问题

Python多处理超时问题,python,timeout,multiprocessing,Python,Timeout,Multiprocessing,我在python中使用多处理,尝试在超时后停止运行。但它不起作用,我也不知道原因 我举了个例子,看起来很简单。只需启动进程,2秒后,终止运行。但这对我不起作用 你能帮我弄清楚吗?谢谢你的帮助 from amazonproduct import API import multiprocessing import time AWS_KEY = '...' SECRET_KEY = '...' ASSOC_TAG = '...' def crawl(): api = API(AW

我在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
不返回任何内容,因此上面的语句总是等价于
如果没有:
<在布尔上下文中,code>None是
False
,所以就这样

如果您希望它始终终止,请取出
If
语句。只需做一次简单的
时间。睡眠

此外,错误:

p = multiprocessing.Process(target = crawl())
这不是你想象的那样。您需要指定
target=crawl
,而不是
target=crawl()
。后者在主线程中调用函数,前者将函数作为参数传递给
Process
,后者将并行执行该函数