相关疑难解决方法(0)

显示正在运行的Python应用程序的堆栈跟踪

我有这个Python应用程序不时被卡住,我无法找到在哪里.

有没有办法告诉Python解释器向您显示正在运行的确切代码?

某种即时堆栈跟踪?

相关问题:

python debugging stack-trace traceback

330
推荐指数
16
解决办法
12万
查看次数

python多处理:一些函数在完成时不返回(队列材料太大)

我正在使用多处理的进程和队列.我并行启动了几个函数,大多数表现得很好:它们完成后,它们的输出转到它们的Queue,它们显示为.is_alive()== False.但由于某种原因,一些功能不起作用.它们总是显示.is_alive()== True,即使在函数的最后一行(一个打印语句说"已完成")完成之后.无论我发布的功能集是什么,都会发生这种情况,即使它只有一个.如果不是并行运行,则函数表现良好并正常返回.什么样的事情可能是什么问题?

这是我用来管理作业的通用功能.我没有展示的是我传递给它的功能.它们很长,经常使用matplotlib,有时会启动一些shell命令,但我无法弄清楚失败的是什么共同点.

def  runFunctionsInParallel(listOf_FuncAndArgLists):
    """
    Take a list of lists like [function, arg1, arg2, ...]. Run those functions in parallel, wait for them all to finish, and return the list of their return values, in order.   
    """
    from multiprocessing import Process, Queue

    def storeOutputFFF(fff,theArgs,que): #add a argument to function for assigning a queue
        print 'MULTIPROCESSING: Launching %s in parallel '%fff.func_name
        que.put(fff(*theArgs)) #we're putting return value into queue
        print 'MULTIPROCESSING: Finished %s in parallel! '%fff.func_name
        # We …
Run Code Online (Sandbox Code Playgroud)

python queue multiprocessing

24
推荐指数
1
解决办法
1万
查看次数

gevent/requests会在发出大量头部请求时挂起

我需要发出100k头请求,并且我在请求之上使用gevent.我的代码运行了一段时间,但最终挂起.我不知道为什么它会挂起,或者它是否挂在请求或gevent中.我在请求和gevent中都使用了timeout参数.

请看下面的我的代码片段,让我知道我应该改变什么.

import gevent
from gevent import monkey, pool
monkey.patch_all()
import requests

def get_head(url, timeout=3):
    try:
        return requests.head(url, allow_redirects=True, timeout=timeout)
    except:
        return None

def expand_short_urls(short_urls, chunk_size=100, timeout=60*5):
    chunk_list = lambda l, n: ( l[i:i+n] for i in range(0, len(l), n) )
    p = pool.Pool(chunk_size)
    print 'Expanding %d short_urls' % len(short_urls)
    results = {}
    for i, _short_urls_chunked in enumerate(chunk_list(short_urls, chunk_size)):
        print '\t%d. processing %d urls @ %s' % (i, chunk_size, str(datetime.datetime.now()))
        jobs = [p.spawn(get_head, _short_url) for _short_url in _short_urls_chunked]
        gevent.joinall(jobs, timeout=timeout) …
Run Code Online (Sandbox Code Playgroud)

python urllib2 gevent python-requests grequests

3
推荐指数
1
解决办法
2233
查看次数