我正在努力弄清楚如何分析一个简单的多进程python脚本
import multiprocessing
import cProfile
import time
def worker(num):
time.sleep(3)
print 'Worker:', num
if __name__ == '__main__':
for i in range(5):
p = multiprocessing.Process(target=worker, args=(i,))
cProfile.run('p.start()', 'prof%d.prof' %i)
Run Code Online (Sandbox Code Playgroud)
我正在启动5个进程,因此cProfile会生成5个不同的文件.在每个内部我想看到我的方法'worker'运行大约需要3秒钟,但我只看到'start'method内部正在发生的事情.
如果有人能向我解释,我将不胜感激.
import multiprocessing
import cProfile
import time
def test(num):
time.sleep(3)
print 'Worker:', num
def worker(num):
cProfile.runctx('test(num)', globals(), locals(), 'prof%d.prof' %num)
if __name__ == '__main__':
for i in range(5):
p = multiprocessing.Process(target=worker, args=(i,))
p.start()
Run Code Online (Sandbox Code Playgroud) 我在理解(并最终解决)为什么在内存中使用大型字典使得创建其他字典的时间更长时会遇到一些困难.
这是我正在使用的测试代码
import time
def create_dict():
# return {x:[x]*125 for x in xrange(0, 100000)}
return {x:(x)*125 for x in xrange(0, 100000)} # UPDATED: to use tuples instead of list of values
class Foo(object):
@staticmethod
def dict_init():
start = time.clock()
Foo.sample_dict = create_dict()
print "dict_init in Foo took {0} sec".format(time.clock() - start)
if __name__ == '__main__':
Foo.dict_init()
for x in xrange(0, 10):
start = time.clock()
create_dict()
print "Run {0} took {1} seconds".format(x, time.clock() - start)
Run Code Online (Sandbox Code Playgroud)
如果我按原样运行代码(首先在Foo中初始化sample_dict),然后在循环中再次创建相同的字典10次,我得到以下结果:
dict_init in Foo took 0.385263764287 …Run Code Online (Sandbox Code Playgroud) 我正在尝试调试一个简单的 python 应用程序,但到目前为止还没有运气。
import multiprocessing
def worker(num):
for a in range(0, 10):
print a
if __name__ == '__main__':
for i in range(5):
p = multiprocessing.Process(target=worker, args=(i,))
p.start()
Run Code Online (Sandbox Code Playgroud)
我想在 for 循环中设置一个断点来跟踪 'a' 的值,但我尝试过的工具都无法做到这一点。到目前为止,我尝试使用以下方法进行调试:
我真的很感激任何帮助!
我正试图找出一种方法,当通过电子邮件创建问题时,向匿名用户发送电子邮件.我需要的是这个匿名用户在问题打开,评论和关闭时收到通知电子邮件.根据他们的官方文档,这只能在创建者已经是JIRA中的用户或者即时创建用户时才能完成.这些都不适合我.到目前为止我找到的解决方法是:
我编写自己的脚本没有问题,但我只是想确保我不会重新发明轮子.有没有其他方法可以做到这一点?
我会非常感谢任何帮助.